簡體   English   中英

在VBA中使用VLookup引用另一個Excel文件

[英]Using VLookup in VBA to reference another Excel file

我正在嘗試在VBA中編寫一個引用另一個文件的VLookup表。 以下是我的目標的簡單概述:

  • 在另一個Excel文件中查找單元格A2中的值
  • 從另一個Excel文件的第2列中提取信息並放入單元格B2中
  • 轉到單元格A3並重復此過程,直到A列中不再有任何條目

這是我已經擁有的代碼。 我一直收到一條錯誤,上面寫着“無法獲取WOrksheetFunction類的VLookup屬性”。 我檢查了引用該錯誤的其他帖子,但他們沒有任何幫助。 你們都看到我的代碼中有錯誤嗎? 或者有沒有人有更好的方法來完成這項任務?

Sub SBEPlannerAdder()

Dim wbk As Workbook
Set wbk = Workbooks.Open("C:\Users\user\Documents\Support File\Planner.xlsx")

With Sheets("Sheet1")

    ' Selects the first cell to check
    Range("A2").Select
    Dim x As Variant
    x = wbk.Worksheets("Sheet1").Range("A1:C1752")

    ' Loops through all rows until an empty row is found
    Do Until IsEmpty(ActiveCell)

        Range(ActiveCell.Offset(0, 1) & ActiveCell.Row).Value = Application.WorksheetFunction.VLookup((ActiveCell.Column & ActiveCell.Row), x, 2, 0)
        ActiveCell.Offset(1, 0).Select
    Loop
End With

Call wbk.Close(False)
End Sub

當您打開工作簿時,它將成為活動工作簿。 看起來你從未將控制權傳回目標工作簿。

Sub SBEPlannerAdder()
    Dim rw As Long, x As Range
    Dim extwbk As Workbook, twb As Workbook

    Set twb = ThisWorkbook
    Set extwbk = Workbooks.Open("C:\Users\user\Documents\Support File\Planner.xlsx")
    Set x = extwbk.Worksheets("Sheet1").Range("A1:C1752")

    With twb.Sheets("Sheet1")

        For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            .Cells(rw, 2) = Application.VLookup(.Cells(rw, 1).Value2, x, 2, False)
        Next rw

    End With

    extwbk.Close savechanges:=False
End Sub

請參閱如何避免在Excel VBA宏中使用Select以獲取更多方法, 以避免依賴select和activate來實現目標。

這取決於你是打算一次性還是反復做這件事。 我反復假設,因為手動這樣做並不是那么困難。

我要看的第一件事是你的論點。 前兩個應該是范圍。 所以要明確,也許你可以做類似的事情

Dim x As Range
set x = wbk.Worksheets("Sheet1").Range("A1:C1752")
...

Range(ActiveCell.Offset(0, 1) & ActiveCell.Row).Value = Application.WorksheetFunction.VLookup(Range(Activecell.Address), x, 2, 0)

重要的一點是確保前兩個參數是Vlookup函數的范圍。

暫無
暫無

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

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