excel VBA中的AutoFilter

时间:2015-03-02 16:38:53

标签: excel vba excel-vba range autofilter

我有一个大型数据电子表格,我试图使用自动过滤器进行过滤。我有两个autofilter语句,当我同时运行它们时,不返回任何数据(我知道这是一个错误)。但是,当我单独运行它们时它们工作正常。我不确定是什么导致了这个问题。任何帮助将不胜感激。

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

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

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

2 个答案:

答案 0 :(得分:2)

我建议制作一个变量" rng"这是您尝试过滤的整个表格。我将在这个例子中假设" 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

答案 1 :(得分:0)

似乎问题是因为即使您的范围是不同的列,每个语句的Field属性也是1。例如,如果rng3是A列,那么field属性应该是1.如果rng4是B列,那么field属性应该是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"