2016-09-01 5 views
0

私は基本的にこれを行うにしようとしています:いくつかの基準を適用するいくつかのフィルタがすでに存在する場合は、オートフィルタ Excel VBA Autofilterで複数の条件を使用していますか?

  • を適用し、一番上の行には何のフィルターを持っていない場合は

    1. を、クリア/フィルタをリセットします。
    2. ここで、列CがsomeVarXと一致し、列FがsomeVarYと一致するすべての行をフィルタリングします。

    私は、複数の基準を行うことができませんでした私は1を行う方法がわからなかったが、2のために、私は3のために

    If Sheets(sheetName).FilterMode Then Sheets(sheetName).ShowAllData

    をしました。試しました

    Worksheets(sheetName).Range("A1").AutoFilter _ 
            field:=3, _ 
            Criteria1:=someVarX, _ 
            VisibleDropDown:=False 
    
    Worksheets(sheetName).Range("A1").AutoFilter _ 
            field:=6, _ 
            Criteria1:=someVarY, _ 
            VisibleDropDown:=False 
    

    これをすべて修正して正しい構文を使用していますか?あなたのコードで

  • +0

    この:http://stackoverflow.com/questions/21761027/excel-2013-vba-clear-all-filters-macro – cyboashu

    +0

    'ワークシート(SHEETNAME).Range( "A1")オートフィルタ_ フィールド:= 3、_ Criteria1:= "&someVarX&"、_ VisibleDropDown:= Falseの ワークシート(SHEETNAME).Range(" A1 ").AutoFilter _ fie ld:= 6、_ Criteria1:= "&someVarY&"、_ VisibleDropDown:= False'をqoutesで上書きしてください。 – HA560

    答えて

    0

    あなたが不足している:Operator:=xlFilterValues

    enter image description here

    Sub test() 
    
        Dim rng  As Range 
        Dim wks  As Worksheet 
        Set wks = Sheet2 
        Set rng = wks.Range("a1:d11") 
    
        If Not wks.AutoFilterMode Then '/ No Filters. Just set one, no criterias. 
         rng.AutoFilter 
        ElseIf wks.FilterMode Or (wks.AutoFilterMode And wks.FilterMode) Then '/ Already have filters. Clear them. 
         wks.ShowAllData 
        Else '/ Set Multiple criterias 
         rng.AutoFilter Field:=3, Criteria1:=Array("20", _ 
         "30", "40", "50"), Operator:=xlFilterValues 
         rng.AutoFilter Field:=1, Criteria1:="jul" 
        End If 
    
    End Sub 
    
    関連する問題