簡體   English   中英

如何在 Excel VBA 中使用帶有循環的 VLOOKUP 將數據寫入多個工作表?

[英]How do you use VLOOKUP with a loop in Excel VBA to write data into multiple sheets?

我正在嘗試使用循環和 VLookup 將信息寫入 excel 中的多個工作表,這些工作表都從同一個輸入工作表中獲取信息。 它適用於一張工作表,但我不斷收到錯誤消息,即“無法獲取工作表 Function 類的 VLookup 屬性”對於其他工作表。 錯誤在變量 Wave(i) 中。

Function Waves(BN() As Integer, Table As Range, Wave() As String, _
               wsName As String, numRows As Integer)
Dim i As Integer
For i = 0 To numRows
    BN(i) = ThisWorkbook.Worksheets(wsName).Range("A" & i + 2) 'change 5k to a string variable
    Set Table = ThisWorkbook.Worksheets("Cleaned Input").Range("Table2")
    Wave(i) = Application.WorksheetFunction.VLookup(BN(i), Table, 13)
    ThisWorkbook.Worksheets(wsName).Range("F" & i + 2) = Wave(i)
Next
End Function

如果您刪除WorksheetFunction ,您可以使用IsError()測試 Vlookup 返回值。 如果包含 WorksheetFunction,則在 Vlookup 未找到匹配項時會出現運行時錯誤。

Function Waves(BN() As Integer, Table As Range, Wave() As String, _
                   wsName As String, numRows As Integer)

    Dim i As Integer, v, ws As Worksheet

    Set ws = ThisWorkbook.Worksheets(wsName)
    Set Table = ThisWorkbook.Worksheets("Cleaned Input").Range("Table2")

    For i = 0 To numRows
        BN(i) = ws.Range("A" & i + 2) 'change 5k to a string variable
        v = Application.VLookup(BN(i), Table, 13, False)
        If IsError(v) Then v = "No Match"       
        Wave(i) = v
        ws.Range("F" & i + 2) = v
    Next

End Function

順便說一句,這確實應該是一個 Sub,因為它不直接返回值。

暫無
暫無

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

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