Excel VBA Vlookup - 无法获取Vlookup属性

Jef*_*mer 4 excel vba vlookup

我有以下脚本,我收到VLOOKUP错误:

Dim DataRange, LookupRange As Range
Dim Data, Test As Variant

Set DataRange = Sheets("sheet").Range("A1:K12000")
Set LookupRange = sheets("sheet2").Range("A1:C50")
Data = DataRange.Value

For i = LBound(Data, 1) To UBound(Data,1)
  ReDim Preserve Test(1 To 3, 1 To i)
  test(1, i) = Application.WorksheetFunction.VLookup(Data(i, 4), LookupRange, 3, 0)
  'Other stuff works fine
Next i
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到错误说明:

"Unable to get the VLookup property of the WorksheetFunction class"
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为所有变量和范围在监视模式下都很好.查询也是字母...任何想法发生了什么?

And*_*ASM 5

这可能意味着任何数量的事情.它可能只是意味着您Data(i, 4)在LookupRange中找不到您的值.

Run-time error '1004':

Unable to get the VLookup property of the WorksheetFunction class
Run Code Online (Sandbox Code Playgroud)

#N/A来自的相同=vlookup("A",A1:B3,2,false)

在线上设置断点

test(i) = Application.WorksheetFunction.VLookup(Data(i, 4), LookupRange, 3, 0)
Run Code Online (Sandbox Code Playgroud)

并设置手表Data(i, 4)以及手表i.查看Data(i, 4)查找范围中是否存在值.i如果它已经正确运行了一些循环迭代,请查看是否大于1.

作为旁注,你的代码无论如何Test都不会运行,因为它是一个空变量而不是数组.你需要像这样的一条线

ReDim Test(LBound(Data, 1) To UBound(Data, 1))
Run Code Online (Sandbox Code Playgroud)

在for循环之前让它工作.

这里阅读错误处理.您需要从VBA正确处理VLOOKUP.