在VBA中获取MS Excel AutoFilter的唯一值

时间:2017-01-31 20:07:33

标签: excel vba excel-vba

我有一个在表中过滤(A)的函数:

(A) | B | C | D | E
 x
 x
 y
 x
 zx

现在我想输出行(A)

中的所有唯一值

- > ' x',' y',' zx'

过滤之前

,但不知道如何获取此信息。

Sub MakeFilter()
  Worksheets("Sheet1").Range("A3:AT1000").AutoFilter field:=1, Criteria1:="x", _
       VisibleDropDown:=True
End Sub

在图像中,您可以看到它是如何手动完成的。彼得在列表中是两次,但在过滤器选择列表中,它只有一次。我只想在选择框中输入这些值。所有这些。

First image Second image

1 个答案:

答案 0 :(得分:1)

下面的代码会将A列复制到表2中,然后删除所有重复项并应用您的自动过滤器。你最好使用循环来完成下面描述的任务:

Sub MakeFilter()

Dim ws As Worksheet
Dim wbnew As Workbook

x = 0

Set wbnew = Workbooks.Add(xlWBATWorksheet)

    For Each ws In ActiveWorkbook

    wbnew.Sheets(1).Range("A3:A1000").Offset(0, x).Value = ws.Sheets(1).Range("A3:A1000").Value

    wbnew.Sheets(1).Range("A3:A1000").Offset(0, x).RemoveDuplicates Columns:=Array(1), Header:=xlNo

    x = x + 1

    ws.Range("A3:AT1000").AutoFilter field:=1, Criteria1:="x", VisibleDropDown:=True

    Next ws

End Sub

如果有帮助,请告诉我。