繁体   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