循环访问频繁更改的自动筛选器

Looping Through AutoFilters that Frequently Change

我有一个每天都在变化的数据集。我想根据公司名称过滤数据 - "Company 1"、"Company 2"、"Company 3" 等。然后 运行 另一个子项。我目前使用以下代码进行(仅过滤)。

Sub WhosebugQuestion()
    Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
        "Company 1"
    Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
        "Company 2"
    Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
        "Company 3"
    Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
        "Company 4"
    Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
        "Company 5"
End Sub

但由于数据(包括公司名称)在不断变化 - 例如它将一直上升到 "Company 20",排除奇数公司,具有完全不同的名称,如 "New company name 45",等等。这使得很难有一致的代码来完成所有的点击按钮。

我尝试了以下代码(只是为了看看我是否在正确的轨道上,任意使用“50”)来循环所有的自动过滤器选项

Sub LoopThroughAuto
    For i = 1 to 50
    Editing_Sheet.Range("$A:$AH69").AutoFilter Field:=1, Criteria1:= _
        i
next i

但这没有用。无论如何循环所有的自动过滤器选项然后过滤它们?

感谢您的帮助!

Dictionary 对象允许您在 Column A 中创建所有唯一条目的列表。接下来,您可以遍历唯一条目,按每个条目进行过滤。注意:在我下面的代码中,我使用了 A1CurrentRegion 属性。 属性 假设数据是连续的,没有任何空行或空列。必要时更新它。

Sub WhosebugQuestion()
    Dim rngCompanyNames As Range
    Dim oDictionary As Object
    Dim cel As Range

    Set oDictionary = CreateObject("Scripting.Dictionary")
    Set rngCompanyNames = Intersect(Editing_Sheet.Range("A1").CurrentRegion, Editing_Sheet.Columns(1))

    For Each cel In rngCompanyNames
        If oDictionary.exists(cel.Value) Then
            'Do nothing for now
        Else
            oDictionary.Add cel.Value, 0
        End If
    Next cel

    For Each oKey In oDictionary.keys
        Editing_Sheet.Range("A1").CurrentRegion.AutoFilter field:=1, Criteria1:=CStr(oKey)
        'RUN WHATEVER CODE YOU NEED TO RUN NOW
    Next oKey
End Sub