VBA从AutoFilter获取值

时间:2018-06-13 20:51:40

标签: excel vba excel-vba autofilter

假设我拥有超过100,000行的非常大的数据集。在A栏中,我想找到每个唯一的数字。

我知道这可以使用.Find功能和集合/数组完成,但这些似乎需要花费很多时间 - 特别是有超过100,000行。

然而,在自动过滤A列后,当我点击向下箭头时,它只显示唯一变量。是否可以通过这种方式从选择中简单地提取这些值?

'pseudocode
filter.Count
Dim X As Long
For x = 2 to filter.Count
   Cells(x, 14) = filter(x)
Next x

2 个答案:

答案 0 :(得分:1)

你可以使用高级过滤器,它非常快。我尝试了127k行,结果很快。

    Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("D1"), Unique:=True

答案 1 :(得分:0)

您可以将可见单元格提取到数组中。假设您的总范围(不带过滤器)为A2:A10000。运行您的过滤器,然后您可以运行此宏:

Sub t()
Dim arr() As Variant
arr = Range("A2:A10000").SpecialCells(xlCellTypeVisible)

Dim i As Long
For i = LBound(arr) To UBound(arr)
    Debug.Print (arr(i, 1))
    ' Do things with each entry in array
Next i

End Sub