2016-09-11 2 views
1

У меня есть следующий код. Код работает только для 1 ячейки, поэтому я думаю, что процесс цикла не возникает. Может ли кто-нибудь помочь мне выяснить, как я могу сделать цикл работы?application.worksheetfunction.vlookup в vba не работает

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 
+0

Процесс цикла имеет место, но вы не используете переменную цикла в любом месте, поэтому наблюдаемый эффект заключается в том, что процесс цикла не возникает. – GSerg

+0

Не могли бы вы помочь мне настроить процесс поиска этого кода? –

+0

Вы никогда не объясняли, чего хотите достичь с помощью цикла. – GSerg

ответ

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 
+0

Большое вам спасибо, это сделал трюк! –

1

Я предполагаю, что (по логике вашего кода) вы имеете в виду заранее Колонка A и Колонок B самых номер строки в цикле For).

К моим предпочтениям (только), я объявляю и устанавливаю «sheet2» в переменную, а позже использую With Sht2, делает очиститель кода чистым, и mught устраняет возможные ошибки.

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 
+0

Спасибо, это работает! –

+0

@Joe_ft приветствую :) отметьте как ответ (или предыдущий ответ) и upvote –

+0

, чтобы быть честным +1 для вас sir :) – Rosetta

Смежные вопросы