Vba VLookup循环不工作

Vba VLookup循环不工作,vba,excel,vlookup,Vba,Excel,Vlookup,我正在尝试VLookup,直到A列中的单元格为空,并且它不工作,并且返回运行时错误“1004”,无法获取WorksheetFunction类的VLookup属性。有什么帮助吗?或者有没有更好的循环,我可以使用 Sub FindOldValue() Dim oldvalue As String Dim result As String i = 2 j = 1 K = 2 l = 3 Do oldvalue = Worksheets("Products").Cells(i, j) & W

我正在尝试VLookup,直到A列中的单元格为空,并且它不工作,并且返回运行时错误“1004”,无法获取WorksheetFunction类的VLookup属性。有什么帮助吗?或者有没有更好的循环,我可以使用

Sub FindOldValue()
Dim oldvalue As String
Dim result As String
i = 2
j = 1
K = 2
l = 3

Do

oldvalue = Worksheets("Products").Cells(i, j) & Worksheets("Products").Cells(i, K) & "delete"
result = Application.WorksheetFunction.VLookup(oldvalue, Worksheets("Raw Delta").Range("A:H"), 7, 0)
Worksheets("Products").Cells(i, l) = result
i = i + 1
j = j + 1
K = K + 1

Loop Until Worksheets("Products").Cells(i, 1) = ""

End Sub

您是否尝试过在行中仅使用Application.Vlookup而不是Application.Worksheetfunction.Vlookup

result = Application.WorksheetFunction.VLookup(oldvalue, Worksheets("Raw Delta").Range("A:H"), 7, 0)
?

把循环改成这样怎么样

Do

oldvalue = Worksheets("Products").Cells(i, j) & Worksheets("Products").Cells(i, K) & "delete"
resultrow = Application.Match(oldvalue, Worksheets("Raw Delta").Columns(1), 0)
If Not IsError(resultrow) Then
    Worksheets("Products").Cells(i, l) = Worksheets("Raw Delta").Cells(resultrow,7).Value
End If
i = i + 1
j = j + 1
K = K + 1

Loop Until Worksheets("Products").Cells(i, 1) = ""

为什么不在这个简单的任务中使用公式呢?试过了。但是因为它是一个很大的文件,而且只需要花一些时间循环200个项目。如果是1000美元,还有什么呢。这是什么版本的Excel(2007、2013等)?另外,编写自己的查找函数是否可以接受?您只需几行代码就可以创建一个函数来实现这一点。1000并不多。你可以大量更改公式1c1,而不需要循环。尝试过了,但是太慢了。如果你使用
Application.screenUpdatement=False
来加快速度,会出现同样的问题吗?(和
Application.screenUpdate=True
一旦完成)