【问题标题】:Get unique values of MS Excel AutoFilter in VBA在 VBA 中获取 MS Excel 自动筛选的唯一值
【发布时间】:2018-02-21 19:56:13
【问题描述】:

我有一个在表格中过滤 (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

在图像中,您可以看到它是如何手动完成的。 Peter 在列表中出现了两次,但在过滤器选择列表中,它只有一次。我只想要选择框中的那些值。全部。

First image Second image

【问题讨论】:

  • 你能分享你的代码吗?
  • 我做了,但它是非常小的代码。
  • “我想输出....选项”是什么意思???
  • 你想在哪里输出选项?
  • 你只是想“删除重复”吗?

标签: vba excel


【解决方案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

如果有帮助,请告诉我。

【讨论】:

  • 谢谢,是的,不知何故:)。我在这本工作簿中还有 50 张纸,所以我想我会将已删除重复项的表格复制到一个新文件中。这只是为了分析,哪些条目在工作表中。我不想每次都手动操作。
  • 您想从工作表中创建 50 个新文件还是创建一个包含 50 列的文件?
  • 我有一个包含 50 张工作簿的工作簿,每个工作簿都有一个范围 (A3:AT1000) 作为矩阵。所以我想我会手动复制文件并在一个文件中进行过滤,在另一个文件中删除重复项。从我想知道的第二个文件中,存在哪些值,以及存在的频率。然后最后我想在第一个文件中过滤一个变量。
  • 我觉得可以,谢谢!!我认为这会更容易,因为(如果您查看上面的第二张图片),Excel 已经进行了这种分类(彼得在图片 1 的列表中出现了两次,但只有一次作为复选框)
  • 我的代码出错:vba-compile-error-method-or-data-member-not-found
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多