循环通过自动更改的自动筛选器

时间:2015-02-25 17:16:50

标签: vba loops excel-vba autofilter excel

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

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

但随着数据(包括公司名称)不断变化 - 例如它将一直到公司20"排除奇数公司,名称完全不同,如#34;新公司名称45"等等。拥有一致的代码,只需单击按钮即可完成所有操作。

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

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

但那并没有奏效。无论如何都要循环遍历所有自动过滤器选项然后过滤它们吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

A1