如何使用高级过滤器过滤整个数据集,但仅复制单个列?

时间:2018-07-23 04:25:36

标签: excel vba excel-vba

我正在尝试学习如何使用高级过滤器基于一个或两个值来过滤整个数据集,然后将单列(已过滤)复制到新的工作表中。最好是,我只想复制唯一值。我能够复制整个数据集或列的子集,然后删除我多余的列,删除重复项等,但是我知道必须有一个更好,更快的方法。

下面是我当前拥有的代码-可以工作,但是有点慢:

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

0 个答案:

没有答案