簡體   English   中英

從不同的工作簿在 VBA 中執行 Vlookup

[英]Performing Vlookup in VBA from different workbook

你好朋友和社區,

再次尋求幫助,我正在嘗試做一個vlookup VBA,參考數據在另一個工作簿中。 我正在考慮為數據工作簿和工作表分配變量,但無法使其工作。 sub 可以成功運行,但不會在所需的工作表中返回任何結果。 請幫忙!

說明:
WbVlookup是 vlookup 數據工作簿的變量
BuildplanRange是 vlookup 數據范圍的變量
結果需要從第 14 行運行到最后一個結果行

我的想法:在我看來,工作簿和數據范圍的變量都沒有正確分配,但我無法弄清楚語法有什么問題,所以希望有人能提供幫助

Sub VlookupForColumnGHIJ()

Dim EndofRow As Long
Dim RowX As Integer
Dim WbVlookup As Workbook
Dim BuildplanRange As Range



Set WbVlookup = Workbooks.Open("C:\Users\DengSilin\Downloads\Copy of 98289 (FL512S)_Allocation File_WW18 (002)_Cindy_02022021.xlsx")
Set BuilPlanRange = WbVlookup.Worksheets("Build Plan").Column("F:I")


EndofRow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
For RowX = 14 To EndofRow
Cells(RowX, 6) = Application.WorksheetFunction.VLookup(Cells(RowX, 3), BuilPlanRange, 2, 0)

Next RowX

End Sub

您的代碼正在假設哪個工作簿是Active 我的建議是養成一種習慣,始終完全參考您的工作簿和工作表,這樣可以節省大量時間來追蹤錯誤。

所以你的代碼以

Dim WbVlookup As Workbook
Dim BuildplanRange As Range
Set WbVlookup = Workbooks.Open("C:\Users\DengSilin\Downloads\Copy of 98289 (FL512S)_Allocation File_WW18 (002)_Cindy_02022021.xlsx")
Set BuilPlanRange = WbVlookup.Worksheets("Build Plan").Column("F:I")

這是非常明確和明確的。 但接下來,您將引用Cells

EndofRow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

在這種情況下, Cells默認引用當前的ActiveWorkbook 因為您剛剛打開了WbVlookup工作簿,所以這很可能是您的活動工作簿。 我猜這不是你想要的。

因此,對此進行快速更改可能會奏效

Dim wb As Workbook
Dim ws As Worksheet
Set wb = Thisworkbook
Set ws = wb.Sheets("IwantThisSheet")

Dim EndofRow As Long
With ws
    EndofRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For RowX = 14 To EndofRow
        .Cells(RowX, 6) = Application.WorksheetFunction.VLookup(.Cells(RowX, 3), _
                                                             BuilPlanRange, 2, 0)
    Next RowX
End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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