使用VBA从不同的工作表中查找

我想从sheet1列B的Vlookup中,我有我的参考价值在列B中的sheet2。下面是我的代码。 我试图在VBA的帮助下查找,但只有第一行正在填充。 rest它没有得到填充。 有人可以帮我弄这个吗?

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 Clausejoin表单对象来使其明确。 就像是:

 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:

阿克塞尔还指出,你可能错误地引用了这个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