我正在尝试使用Application.Match从电子表格中删除一系列行,然后再使用其余行来编辑现有的电子表格。这是我正在使用的代码,它给我一个类型不匹配错误。我之前使用过类似的逻辑和较小的数据集而没有问题:
If IsError(Application.Match(Fund_Inv_Cusip_Change(LineNumber), Fund_Inv_Cusips_to_Edit, 0)) Then
If DeletionRange Is Nothing Then
Set DeletionRange = Cells(Override_Workbook_Line + 3, 1).EntireRow
Else
Set DeletionRange = Union(DeletionRange, Cells(Override_Workbook_Line + 3, 1).EntireRow)
End If
End If
Next LineNumber
DeletionRange.Delete Shift:=xlUp
Set DeletionRange = Nothing
Fund_Inv_Cusips_to_Edit被声明为一个包含66,124个条目的数组,声明为字符串。 FUnd_Inv_Cusip_Change是一个包含3329个条目的数组,声明为字符串。在立即窗口中使用print(typename(fund_inv_cusips_to_edit())为每个数组返回String(),所以我不确定为什么这是一个类型不匹配。
非常感谢任何帮助。我已经阅读了这个董事会和其他人的很多帖子,而没有看到直接解决这个问题的东西。谢谢!
答案 0 :(得分:1)
Application.Match
在第二个参数中只能占用65,536个元素数组。在立即窗口
?application.match(1,range("A1:A65536").Value,false)
没有错误
?application.match(1,range("A1:A65537").Value,false)
类型不匹配错误。
你可以循环。它效率不高,但可能比你想象的要快。或者您可以将它放在断开连接的记录集中,但加载它可能需要更长的时间而不仅仅是循环。