excel VBA 中的自动筛选

AutoFilter in excel VBA

我有一个很大的数据电子表格,我正在尝试使用自动过滤器对其进行过滤。我有两个自动过滤器语句,当我同时 运行 它们时,return 没有数据(我知道这是一个错误)。但是,当我 运行 他们分开时,他们工作正常。我不确定是什么导致了这个问题。任何帮助将不胜感激。

每个 "rng" 是要过滤的特定列。

    rng3.AutoFilter 1, Criteria1:=Array( _
            "CMS Part D (CY " & Year(Date) & ")", "Commercial", "State Medicaid"), Operator:= _
            xlFilterValues

    rng4.AutoFilter Field:=1, Criteria1:="No"

我建议创建一个变量 "rng",它是您要过滤的整个 table。对于这个例子,我假设 "rng3" 是 A 列,"rng4" 是 B 列。

Sub Filter()
Dim rng as Range

Set rng  = Range("A:B")
rng.Autofilter 1, Criteria1:=Array( _
            "CMS Part D (CY " & Year(Date) & ")", "Commercial", "State Medicaid"), Operator:= _
            xlFilterValues
rng.Autofilter Field:=2, Criteria1:="No"
End Sub

问题似乎是因为您的 Field 属性对于每个语句都是 1,即使您的范围是不同的列。比如rng3是A列,那么字段属性应该是1。如果rng4是B列,那么字段属性应该是2。类似这样....

        Dim rng3 As Range
        Dim rng4 As Range
        Set rng3 = Range("A:A")
        Set rng4 = Range("B:B")

        rng3.AutoFilter Field:=1, Criteria1:=Array("CMS Part D (CY " & Year(Date) & ")", _
            "Commercial", "State Medicaid"), _
            Operator:=xlFilterValues
        rng4.AutoFilter Field:=2, Criteria1:="No"