我有一个工作簿,用于整理不同客户端上的记录。一个工作表包含所有客户端的所有记录(数据表)。我想在工作簿中有另一个工作表(客户表),以提取单个客户的所有独特记录(将在该表中经过数据验证的输入单元格中)并将它们加载到表中(从第5行开始) 。对于每个客户,将有不同数量的记录要从数据表中返回。我希望有一种VBA“加载”按钮可以完成所有繁重的工作,因此您只需要选择要在输入单元格中看到的客户端即可。
我的代码有效,但是当ID列在数据表中按大到小排序时(因为在列表顶部输入新记录更容易),我得到一个错误。此外,确实设法加载的记录是不正确的并且是重复的。如何在不使VLookup出现问题的情况下将数据表ID列从大到小排序?
Sub Load_Client_Records()
Dim Row As Long
Dim Key As Long
Dim VlookupResult As Variant
Row = 5
Key = 1
For Each Client In Sheets("datasheet").Range("Master_IDs")
VlookupResult = WorksheetFunction.VLookup(Client, Sheets("datasheet").Range("RecordTable"), 2)
If (Sheets("client sheet").Range("Client_Name") = VlookupResult) Then
Cells(Row, 1).Value = Key
Cells(Row, 2).Value = VlookupResult
Row = Row + 1
Key = Key + 1
End If
Next
End Sub
在数据表ID列从大到小排序时运行时,出现错误: “运行时错误'1004'无法获取工作表函数类的查找属性”
答案 0 :(得分:0)
当vlookup失败时会发生该错误-也许顶部有空白行或其他内容。如果您这样做:
On Error Resume Next
VlookupResult = WorksheetFunction.VLookup(Client, Sheets("datasheet").Range("RecordTable"), 2)
On Error GoTo 0
它应该绕过vlookup错误。