使用Excel中所需的唯一值进行自动筛选
下面的代码从F列获取唯一联系人列表,然后在即时窗口中输出这些联系人 如何使用创建的数据对数据运行一系列自动筛选(即在for循环中,一次一个)。在每个自动筛选之间,数据将被复制并保存到新的电子表格中使用Excel中所需的唯一值进行自动筛选,excel,vba,Excel,Vba,下面的代码从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(xlC
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
伪代码,很抱歉,我已经有一段时间没有使用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
通过首先将原始数据存储在类型变量数组中,并将不同工作簿的输出存储在类型变量数组中,可以对该代码进行高度优化。只有循环完成后,您才能实际创建输出工作簿,并将数组中的内容写入工作簿
这样,我们就不需要先查找唯一值,然后重复应用自动筛选,这将大大降低速度,也不容易维护。为什么要“运行一系列自动筛选”?用户只能看到上一次自动筛选操作的结果?@cmmi-在每个自动筛选之间,数据将被复制并保存到一个新的电子表格中。因此,您实际上想将每个唯一属性的行复制到一个单独的工作表中?一个单独的新工作表或每个值的新工作表???@cmmi-一个单独的excel文档保存到用户的C:\drive中我不太确定如何实现此解决方案-您能告诉我任何引用的方向?@jmb Resources:,