我正在尝试从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
答案 0 :(得分:2)
当然,您希望根据 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
答案 1 :(得分:1)
您也可以使用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