簡體   English   中英

使用 VLOOKUP 從另一個工作簿中提取數據

[英]Extract data from another workbook using VLOOKUP

我正忙於在 VBA 中創建自己的 function 以從同一目錄中的另一個工作簿中提取數據。 但是,當我從目標工作簿(工作簿 A)中將其稱為 function 時,它給了我一個VALUE!#錯誤。 當我從測試代碼的子過程中調用 function 時,它成功地提取了正確的數據。

在 Excel 我這樣稱呼我的 function =CALCULATE_METERS("D1") ,並使用我在同一個模塊中這樣稱呼它的子過程對其進行測試:

Sub test()
  CALCULATE_METERS ("D1")
  CALCULATE_METERS ("D1,2")
  CALCULATE_METERS ("D1-3")
  CALCULATE_METERS ("D1-5,8,9")
  CALCULATE_METERS ("D1(2),4(2),23(1),24-28")
  CALCULATE_METERS ("D1,4(2),23-25,26-28(2);E1-4;A1-2")
End Sub

包含 VLOOKUP 代碼的 function 是(在CALCULATE_METERS函數中調用):

Private Function GetSquareMeters(block As String, r As Integer) As Integer
  Dim result As String
  Dim meters As String
  Dim wrkb As Workbook
  Dim wrks As Worksheet
  Dim rng As Range
  Dim directory As String
  Dim filename As String
  filename = "DATA REFERENCE.xlsx"
  directory = ActiveWorkbook.Path
  filename = directory & "\" & filename
  Debug.Print (filename)

  Set wrkb = Workbooks.Open(filename)

  meters = Application.WorksheetFunction.VLookup(block, wrkb.Worksheets("Lande").Range("$A$2:$F$120"), 5)

  GetSquareMeters = CInt(meters) * r / 7
End Function

一切都立即打印在 window 中,直到上述 function 中的filename ,但我相信在查找 function 時會生成值錯誤。 為什么用相同的 arguments(excel 中的一個,子過程中的另一個)調用相同的 function 會給出不同的答案? 如何更正此問題,以便可以在 Excel 單元中使用 function?

謝謝!

嘗試使用 Find 而不是 VLookup:

Function GetSquareMeters(block As String, r As Integer) As Integer
  Dim result As String
  Dim meters As String
  Dim wrkb As Workbook
  Dim wrks As Worksheet
  Dim rng As Range
  Dim directory As String
  Dim filename As String
  filename = "DATA REFERENCE.xlsx"
  directory = ActiveWorkbook.Path
  filename = directory & "\" & filename
  Debug.Print (filename)

 For Each wb In Workbooks
    If wb.FullName = Filename Then
    Set wrkb = Workbooks(Filename)
    Else
    Set wrkb = Workbooks.Open(Filename)
    End If
 Next

    meters = wrkb.Sheets("Lande").Range("$A$2:$F$120").Find(block).Offset(0, 4).Value

  GetSquareMeters = CInt(meters) * r / 7
End Function

暫無
暫無

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

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