下面的代码从F列获取一个唯一联系人列表,然后在立即窗口中输出它们。
我如何使用这些数据来创建数据上的一系列自动过滤器(即在for循环中,一次一个)。在每个自动过滤器之间,数据将被复制并保存到新的电子表格中。
Sub GetPrimaryContacts()
Dim Col As New Collection
Dim itm
Dim i As Long
Dim CellVell As Variant
'Get last row value
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
'Loop between all rows to get unique values
For i = 3 To LastRow
CellVal = Sheets("Master").Range("F" & i).Value
On Error Resume Next
Col.Add CellVal, Chr(34) & CellVal & Chr(34)
On Error GoTo 0
Next i
For Each itm In Col
Debug.Print itm
Next
End Sub
答案 0 :(得分:1)
伪代码,抱歉我暂时没有使用过VBA:
dictionary as Dictionary
for each row in sheet
attribute = Cell(A,1)
if (attribute not in dictionary) then
dictionary.put(attribute, newWorkbook)
end if
workbook = dictionary.get(attribute)
'copy row to workbook
end for
通过首先将原始数据存储在Variable类型的数组中,并将各种工作簿的输出存储在Variable类型的数组中,可以高度优化此代码。只有在循环完成后,您才实际创建输出工作簿并将数组中的内容写入工作簿。
这样我们就不需要首先查找唯一值,然后重复应用AutoFilter,这将更慢,更不容易维护。