从VBA的不同表Vlookup

时间:2015-03-17 07:36:32

标签: excel vba excel-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

2 个答案:

答案 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