我正在尝试学习如何使用高级过滤器基于一个或两个值来过滤整个数据集,然后将单列(已过滤)复制到新的工作表中。最好是,我只想复制唯一值。我能够复制整个数据集或列的子集,然后删除我多余的列,删除重复项等,但是我知道必须有一个更好,更快的方法。
下面是我当前拥有的代码-可以工作,但是有点慢:
wk.Range("BL2").Value = Me.ComboBox2.Value 'assign filter values
sh.Select
Selection.CurrentRegion.Select
Selection.Name = "Data"
sh.Range("Data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=wk.Range("Filter"), copytorange:=wh.Range("A1:CT1")
lr = wh.Range("A" & Rows.Count).End(xlUp).Row
wh.Range("A1:AR" & lr).ClearContents 'remove unnecessary data
wh.Range("AT1:CT" & lr).ClearContents 'remove unnecessary data
wh.Range("AS1:AS" & lr).RemoveDuplicates Columns:=Array(1), Header:=xlYes
lr = wh.Range("AS" & Rows.Count).End(xlUp).Row 'reset last row
Set oneRange = wh.Range("AS1:AS" & lr)
Set aCell = wh.Range("AS1")
oneRange.Sort key1:=aCell, order1:=xlAscending, Header:=xlYes
With ws
myArray = wh.Range("AS2:AS" & lr + 1)
ws.Activate
ComboBox3.List = myArray
End With