簡體   English   中英

用VBA查看不同的表格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM