![](/img/trans.png)
[英]Vlookup for all sheets in an Excel workbook with VBA loop is not working
[英]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.