[英]Vlook up from different sheet with VBA
我正在嘗試從sheet1列B的Vlookup,我在列B中的sheet2中有我的參考值。下面是我的代碼。 我試圖在VBA的幫助下查找,但只有第一行正在填充。 休息它沒有人口稠密。 有人可以幫我弄這個嗎?
Sub vl()
Set rngLast = Range("B1").Offset(Rows.Count - 1).End(xlUp)
With Range("B2", rngLast)
.Offset(0, 0).FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!C[-1]:C,2,0)"
.Value = .Offset(0, 0).Value
End With
End Sub
當然你想根據B欄獲得最后一排? 看起來好像A列包含取決於最后一行的值。 所以嘗試:
Sub vl()
Set rngLast = Range("A1").Offset(Rows.Count - 1).End(xlUp).Offset(0, 1)
With Range("B2", rngLast)
.FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!C[-1]:C,2,0)"
.Value = .Value
End With
End Sub
您也可以使用A1 notation
但使用.Formula
屬性。
也可以在With Clause
包含工作表對象以使其明確。 就像是:
Dim rnglast As Range
With Sheets("Sheet1")
Set rnglast = .Range("B" & .Rows.Count).End(xlUp)
With .Range("B2", rnglast)
.Formula = "=VLOOKUP(A2,Sheet2!B:C,2,0)"
.Value = .Value
End With
End With
Offset
也很好,但如果沒有必要,你不需要使用它。
EDIT1:
Axel還指出你可能錯誤地引用了rnglast
。
如果您需要獲取包含A列數據的最后一個單元格,則應將其引用到A。
那么方法是:
Dim rowlast As Long
With Sheets("Sheet1")
rowlast = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("B2:B" & rowlast)
.Formula = "=VLOOKUP(A2,Sheet2!B:C,2,0)"
.Value = .Value
End With
End With
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.