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