2012-05-21 80 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