2013-08-27 109 views
1

我正在嘗試使用VBA Vlookup填寫與另一個工作表上的某些字段相同的工作表單元格,並且卡住了。如何使用VBA Vlookup填充單元格

工作表用戶具有以下數據,列A包含Login列B包含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」&row&「C」&column',其中「row」和「column」可以是變量。 –

+0

對於一個Excel問題,實際上是關於*編程*的Excel對象模型的+1!隨時*接受*解決您的問題的答案:) –

回答

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

@Carlos,如果這確實解決了您的問題,請點擊對號接受它作爲答案。 –

相關問題