首页 > 解决方案 > 如何使用 vlookup 在另一张表的 G 列中查找值?

问题描述

我正在处理一张名为“Master Filtered”的工作表,其中 K 列的值应填充来自工作表“Ndex Positions”列 G 的查找值。

这是我写的一段代码

Sub MTL_OR_TOR()
Dim AcctNb As String
Dim result As String
Dim myRange As Range


Dim lastrow As Long
lastrow = Worksheets("Master Filtered").Cells(Rows.Count, 1).End(xlUp).Row

Worksheets("Master Filtered").Range("K3").Value = "MTL OR TOR"

Set myRange = Worksheets("Ndex Positions").Range("A2:G9000") 'Range in which the table MTL or TOR should be entered


For G = 4 To lastrow

AcctNb = Worksheets("Master Filtered").Cells(G, 3).Value
result = Application.WorksheetFunction.VLookup(AcctNb, myRange, 7, False)

Worksheets("Master Filtered").Range("K" & G).Value = result
Next

End Sub

但这似乎不起作用(“无法获取 WorksheetFucntion 类的 Vlookup 属性”)

我不知道我的错误是什么。如果这有帮助,当我在以下行中用数字 2 替换数字 7 时:“result = Application.WorksheetFunction.VLookup(AcctNb, myRange, 7, False)” 一切正常。但它从 B 列而不是 G 列获取值。这就是为什么我将 2 替换为 7(字母表中字母 G 的索引)。但是,这似乎不起作用。

如果您知道我的错误可能在哪里,请告诉我。

谢谢 :)

标签: excelvbavlookup

解决方案


尝试使用Index/Match准确的参考...

Application.Index(OutputRange, Application.Match(LookupVal, LookupRange,0))

使用您的数据,假设我得到正确的Match范围(假设您在 A 列中找到您的 AcctNb):

AcctNb = Worksheets("Master Filtered").Cells(G, 3).Value
With Worksheets("Ndex Positions")
    Application.Index(.Range("G:G"), Application.Match(AcctNb, .Range("A:A"),0))
End With

注意0匹配中的意思是“完全匹配”


推荐阅读