我有以下脚本,我收到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)
这很奇怪,因为所有变量和范围在监视模式下都很好.查询也是字母...任何想法发生了什么?
这可能意味着任何数量的事情.它可能只是意味着您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.