从VBA中的过滤器中提取唯一值的集合

Soh*_*ham 5 excel vba filter excel-vba with-statement

我有一个文件,其行数在8列中扩展到数万.一个特定的列包含周末日期.我必须计算此文件中存在的周末数.

有没有办法提取数据,如下图所示?

在此输入图像描述

如果我们可以提取并获取此集合的计数,那么问题就解决了.

请帮忙.

提前致谢!

小智 6

下面将从A列(25K值)中取一系列三个随机大写字母,将它们作为唯一键(13,382个值)放入字典中,并在排序之前将它们转储回同一工作表中的C列.往返需要约0.072秒.

以下代码要求您进入VBE的工具►参考并添加Microsoft Scripting Runtime.它保存了Scripting.Dictionary的库定义.但是,如果使用CreateObject("Scripting.Dictionary"),则不需要库引用.

Sub buildFilterList()
    Dim dMUSKMELONs As Object    'New Scripting.Dictionary
    Dim v As Long, w As Long, vTMPs As Variant

    Debug.Print Timer
    Set dMUSKMELONs = CreateObject("Scripting.Dictionary")

    With Worksheets("Sheet2")   '<-set this worksheet reference properly!
        vTMPs = .Range(.Cells(2, "A"), .Cells(Rows.Count, "A").End(xlUp)).Value2
        For v = LBound(vTMPs, 1) To UBound(vTMPs, 1)
            If Not dMUSKMELONs.Exists(vTMPs(v, 1)) Then _
                dMUSKMELONs.Add key:=vTMPs(v, 1), Item:=vbNullString
        Next v
        With .Cells(2, "C").Resize(dMUSKMELONs.Count, 1)
            .Value = Application.Transpose(dMUSKMELONs.Keys)
            .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                        Orientation:=xlTopToBottom, Header:=xlNo
        End With
        .Cells(2, "D") = dMUSKMELONs.Count
    End With

    dMUSKMELONs.RemoveAll
    Set dMUSKMELONs = Nothing

    Debug.Print Timer

End Sub
Run Code Online (Sandbox Code Playgroud)

结果应与此类似:

        筛选列表值唯一且已排序