2012-05-21 33 views
0

我在Excel 2010工作区中收集了大量数据的电子表格。此页面可以通过自动筛选器中的内置进行排序。 在另一张纸上,我做了一个按钮,它做了一些排序。 例如:Excel - 同时提供更多条件

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代码,以便可以同时按下两个按钮,例如可以在自动过滤器按钮中构建内容?

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

在此先感谢

回答

1

也许这样的事情?所以这两种方式都适用?例如,如果您选择第二季度,那么它会显示第二季度,然后当您按第三季度时,它会显示第二季度和第三季度。

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

注意:我没有测试代码,以便让你得到任何错误:)

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 
+0

它看起来像我们在正确的轨道上:)我会尝试在我的工作表上测试,看看它是否工作。当我阅读代码时,它看起来像我所需要的。 我会举一个简单的例子,因为测试起来要容易得多。感谢你的sugestions,我会稍后报告:) – Kano

+0

它看起来像它的一些工作,但我很困惑:(我想做4个按钮,将年份分成4个季度。从01-01到01-04。从01-04到01-07。从01-07到01-10,最后从01-10到31-12。我已经尝试过了,但是我不知道这里是否有句子。 I更新了我所有的代码 – Kano

+0

你的解决方案工作,但它会非常复杂,我会如果我可以找到一种方法来让它更容易,因为我有4个不同的按钮,它将是一个非常长的If。 – Kano

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过滤一个过滤器。

+0

是的,这就是我excactly想要什么我都知道,但是在2个不同的按钮。我希望那不是在不同年份展示不同季度的无尽组合:) – Kano