vba中的application.worksheetfunction.vlookup不循环

时间:2016-09-11 08:02:21

标签: excel vba excel-vba

我有以下代码。代码仅适用于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

2 个答案:

答案 0 :(得分:1)

我假设(通过代码的逻辑)你的意思是按For循环中的行号推进 A列 B列

根据我的偏好(仅限),我声明并将“sheet2”设置为变量,稍后使用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

答案 1 :(得分:0)

只需使用i循环

中的For
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