Excel - 同时提供更多标准

时间:2012-05-21 05:52:33

标签: button excel-vba autofilter vba excel

我的Excel 2010工作区中有一个包含大量数据的电子表格。此页面可以按自动过滤器中的内置进行排序。 在另一张纸上,我做了一个按钮来完成一些排序。 例如:

Sub forsteKvartalAftaleIndgaet()

'
    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:="<01-04", _
        Operator:=xlAnd
    Sheets("Ark2").Select
End Sub

Sub andenKvartalAftaleIndgaet()
'

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-04", _
        Operator:=xlAnd, Criteria2:="<01-07"
    Sheets("Ark2").Select
End Sub

当我这样做时,表格显示了一年中的第一和第二季度。我有两个按钮显示一年中的第三季度和第四季度:

Sub TredjeKvartalAftaleIndgaet()
'

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-07", _
        Operator:=xlAnd, Criteria2:="<01-10"
    Sheets("Ark2").Select
End Sub


Sub FjerdeKvartalAftaleIndgaet()
'

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-10", _
        Operator:=xlAnd, Criteria2:="<31-12"
    Sheets("Ark2").Select
End Sub

我的问题:当我按下按钮(第二季度)时,它会过滤并显示第二季度。但是当我按下“第三季度”按钮时,它会删除第二季度过滤器并显示第三季度。

是否可以编写某种VBA代码,这样可以同时按下两个按钮,就像可以使用自动过滤器按钮构建一样?

如果您不确定我的意思,请寻求更好的解释。

提前致谢

2 个答案:

答案 0 :(得分:1)

也许这样的事情?这两种方式都适用吗? i.e.if

1)您首先选择第二季度然后显示第二季度,然后当您按第三季度时,它将显示第二季度和第三季度。

2)您首先选择第3季度,然后选择第3季度,然后当您按第2季度时,它将显示第2季度和第3季度。

注意:我没有测试过代码,如果您收到任何错误,请告诉我们。)

Dim strCrt1 As String, strCrt2 As String, strCrt3 As String, strCrt4 As String

Sub andenKvartalAftaleIndgaet()
    strCrt1 = ">01-04"
    strCrt2 = "<01-07"

    With Sheets("AMRM01")
        If strCrt4 <> "" Then
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt1, Operator:=xlAnd, _
            Criteria2:=strCrt4
        Else
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt1, Operator:=xlAnd, _
            Criteria2:=strCrt2
        End If
    End With
End Sub

Sub TredjeKvartalAftaleIndgaet()
    strCrt3 = ">01-04"
    strCrt4 = "<01-07"

    With Sheets("AMRM01")
        If strCrt1 <> "" Then
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt1, Operator:=xlAnd, _
            Criteria2:=strCrt4
        Else
            .Range("$A$12:$P$76").AutoFilter Field:=2, _
            Criteria1:=strCrt3, Operator:=xlAnd, _
            Criteria2:=strCrt4
        End If
    End With
End Sub

答案 1 :(得分:0)

我真的不明白,但听起来你只是想要显示第2季和第3季?我认为你需要自己的宏。

Sub secondAndThirdQuarter()

    Sheets("AMRM01").Select
    ActiveSheet.Range("$A$12:$P$76").AutoFilter Field:=2, Criteria1:=">01-04", _
        Operator:=xlAnd, Criteria2:="<01-10"
    Sheets("Ark2").Select

End Sub

这不会给你想要的结果吗?我不知道是否可以使用VBA过滤过滤器。