2013-08-27 2 views
1

Я пытаюсь заполнить ячейки листа некоторыми полями из другого листа в той же книге, используя VBA Vlookup, и я застрял.Как заполнить ячейки с помощью VBA Vlookup

Рабочие листы имеют следующие данные: в колонке А содержится Login столбец В содержит Number; он пуст, но цель состоит в том, чтобы заполнить его данными из другого листа:

Login Number 
=============== 
ffff  
bbbb  
cccc  
dddd  
eeee  
aaaa 

На листе «Данные» я получил следующее:

Login Number 
=============== 
aaaa  1234 
bbbb  1235 
cccc  1236 
dddd  1237 
eeee  1238 
ffff  1239 

В настоящее время я использую этот код

Sub VL() 

    Dim Login As Range 
    Set Login = Sheets("Users").Cells(2, 1) 

    Do Until Len(Login) = 0 'This will loop until the first empty cell 
     Login.Offset(0, 1).FormulaR1C1 = Application.WorksheetFunction.VLookup(_ 
           Sheets("Users").Range("$A:$A"), [Table], 2, False) 
     Calculate 
     Login.Offset(0, 1).Value = Login.Offset(0, 1).Value 
     Set Login = Login.Offset(1, 0) 
    Loop 

End Sub 

И результат не как ожидалось:

Login Number 
=============== 
ffff  #N/A 
bbbb 
cccc 
dddd 
eeee 
aaaa 

Я искал на форуме, но не нашел ничего, чтобы помочь мне решить эту проблему.

+0

Ссылки на ячейки в формуле, которую вы поставляете «Range.FormulaR1C1», должны выглядеть как «R1C1»; это упрощает работу с ссылкой на «A1», чтобы создать ссылку на ячейку с кодом VBA, как в «ref =« R »и строке« C »и столбце», где «строка» и «столбец» могут быть переменные. –

+0

И +1 для вопроса Excel, который на самом деле о * программировании * с объектной моделью Excel! Не стесняйтесь * принимать * ответ, который решает вашу проблему :) –

ответ

4
Sub VL() 
    With Sheets("Users").Range("A2", Sheets("Users").Cells(Rows.Count, "A").End(xlUp)) 
     .Offset(, 1).Formula = "=VLOOKUP(A" & .Row & ",'Data'!$A:$B,2,FALSE)" 
     .Offset(, 1).Value = .Offset(, 1).Value 
    End With 
End Sub 
+0

Привет, Тигр, Большое спасибо за вашу оперативную помощь, это решит мою проблему. С наилучшими пожеланиями – Carlos

+0

@ Карлос, если это действительно решило вашу проблему, любезно принять его как ответ, нажав галочку. –

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