vba中的application.worksheetfunction.vlookup不会循环

我有以下代码。 代码只能处理1个单元,所以我认为循环过程不会发生。 任何人都可以帮我搞清楚如何使循环工作?

Sub test4() Dim i As Long Dim lr As Long lr = Sheets("sheet2").Range("a" & Rows.Count).End(xlUp).Row For i = 1 To lr Sheets("sheet2").Range("b1") = Application.WorksheetFunction.vlookup(Sheets("sheet2").Range("A1"), Sheets("sheet1").Range("A1:g10"), 2, False) Next i End Sub 

只需在For循环中使用i

 Sub test4() Dim i As Long Dim lr As Long lr = Sheets("sheet2").Range("a" & Rows.Count).End(xlUp).Row For i = 1 To lr Sheets("sheet2").Range("b" & i) = Application.WorksheetFunction.vlookup(Sheets("sheet2").Range("A" & i), Sheets("sheet1").Range("A1:g10"), 2, False) Next i End Sub 

我假设(通过你的代码的逻辑)你的意思是提前列A列B的行号在For循环)。

按照我的意愿(只),我声明并设置“sheet2”为一个variables,然后使用With Sht2 ,使代码更清晰,并消除可能的错误。

 Sub test4() Dim i As Long Dim lr As Long Dim Sht2 As Worksheet ' is it "sheet2" or "Sheet2" Set Sht2 = ThisWorkbook.Sheets("sheet2") ' finding last row is Column "A" lr = Sht2.Cells(Sht2.Rows.Count, "A").End(xlUp).Row With Sht2 For i = 1 To lr .Range("B" & i) = Application.WorksheetFunction.VLookup(.Range("A" & i), Sheets("sheet1").Range("A1:G10"), 2, False) Next i End With End Sub