【エクセルマクロ】オートフィルタ複数条件3つ以上:9選

VBA-フィルタ複数条件でデータ抽出-アイキャッチ ExcelVBA

エクセルマクロで、オートフィルタで3つ以上の複数条件に該当するデータを抽出するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。

オートフィルタ複数条件3つ以上

以下のExcelVBAを実行すると、オートフィルタで3つ以上の条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
        Criteria1:=Array("りんご", "ばなな", "めろん"), _
        Operator:=xlFilterValues
        
End Sub
マクロ実行後

B列で「りんご」「ばなな」「めろん」に当てはまるデータを表示します。

[Field:2] にて列を指定します。(B列の列番号は ”2” )


 
 

オートフィルタ複数条件3つ以上(セル参照)

以下のExcelVBAを実行すると、セル参照してオートフィルタで3つ以上の条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
        Criteria1:=Array(Range("E1").Value, Range("F1").Value, Range("G1").Value), _
        Operator:=xlFilterValues

End Sub
マクロ実行後

B列で「りんご」「ばなな」「めろん」に当てはまるデータを表示します。

セルE1:G1 に抽出条件を入力します。

[Field:2] にて列番号を指定します。(B列の列番号は ”2” )


 
 

オートフィルタ複数条件3つ以上(配列使用)

以下のExcelVBAを実行すると、オートフィルタで複数条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

Dim ary(2) As String

    ary(0) = "りんご"
    ary(1) = "ばなな"
    ary(2) = "めろん"

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
        Criteria1:=Array(ary), _
        Operator:=xlFilterValues

End Sub
マクロ実行後

B列で「りんご」「ばなな」「めろん」に当てはまるデータを表示します。

[Field:2] にて列を指定します。(B列の列番号は ”2” )


 
 

オートフィルタ複数条件3つ以上(2列)

以下のExcelVBAを実行すると、オートフィルタで3つ以上の条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
        Criteria1:=Array("りんご", "ばなな", "めろん"), _
        Operator:=xlFilterValues


    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=1, _
        Criteria1:=Array("101", "102", "103"), _
        Operator:=xlFilterValues
        
End Sub
マクロ実行後

以下2列から複数条件に当てはまるデータを抽出します。
・B列で「りんご」「ばなな」「めろん」のデータ
・A列で「101」「102」「103」のデータ

[Field:1] 、[Field:2] で列番号を指定します。


 
 

オートフィルタ複数条件3つ以上(2列_配列使用)

以下のExcelVBAを実行すると、オートフィルタで複数条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

Dim aryX(2) As String
Dim aryY(2) As String

    aryX(0) = "りんご"
    aryX(1) = "ばなな"
    aryX(2) = "めろん"

    aryY(0) = "101"
    aryY(1) = "102"
    aryY(2) = "103"

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
        Criteria1:=Array(aryX), _
        Operator:=xlFilterValues

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=1, _
        Criteria1:=Array(aryY), _
        Operator:=xlFilterValues

End Sub

マクロ実行後

以下2列から複数条件に当てはまるデータを抽出します。
・B列で「りんご」「ばなな」「めろん」のデータ
・A列で「101」「102」「103」のデータ

[Field:1] 、[Field:2] で列番号を指定します。


 
 

オートフィルタ複数条件3つ以上(日付)

以下のExcelVBAを実行すると、オートフィルタで3つ以上の条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=3, _
        Criteria1:=Array("2022/5/1", "2022/5/5", "2022/5/10"), _
        Operator:=xlFilterValues

End Sub
マクロ実行後

C列で「2022/5/1」「2022/5/5」「2022/5/10」に当てはまるデータを表示します。

[Field:3] にて列を指定します。(C列の列番号は ”3” )


 

ちなみに、C列の表示形式は「yyyy/m/d」としています。


 
 

オートフィルタ複数条件3つ以上(日付_配列使用)

以下のExcelVBAを実行すると、オートフィルタで3つ以上の条件に当てはまるデータを抽出します。


Dim ary(2) As String

    ary(0) = "2022/5/1"
    ary(1) = "2022/5/5"
    ary(2) = "2022/5/10"

    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=3, _
        Criteria1:=Array(ary), _
        Operator:=xlFilterValues

End Sub
マクロ実行後

C列で「2022/5/1」「2022/5/5」「2022/5/10」に当てはまるデータを表示します。

[Field:3] にて列を指定します。(C列の列番号は ”3” )


 

ちなみに、C列の表示形式は「yyyy/m/d」としています。


 
 

オートフィルタ複数条件3つ以上(含む)

以下のExcelVBAを実行すると、オートフィルタで3つ以上の条件に当てはまるデータを抽出します。


Sub フィルタ複数条件()

Dim i As Long
Dim j As Long
Dim Q As Long
Dim a  As Variant
Dim b(2) As String

    '条件
    b(0) = "*り*"
    b(1) = "*なな*"
    b(2) = "*め*"

    '配列用
    a = Array()
    j = 0

    '配列ループ
    For Q = 0 To UBound(b)

        '2~15行目までループ
        For i = 2 To 15

            '該当する値を配列格納
            If Cells(i, 2) Like b(Q) Then
                ReDim Preserve a(j)
                a(j) = Cells(i, 2).Value
                j = j + 1
            End If
        Next i
    Next Q

    'フィルタ抽出
    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
            Criteria1:=a, Operator:=xlFilterValues
            
End Sub
マクロ実行後

ワイルドカードを使用して、B列で以下条件に当てはまるデータを抽出します。
・「り」を含む
・「なな」を含む
・「め」を含む


 
 

オートフィルタ複数条件3つ以上(除く)

以下のExcelVBAを実行すると、オートフィルタで3つ以上の条件に当てはまらないデータを抽出します。


Sub フィルタ複数条件()

Dim i As Long
Dim j As Long
Dim a  As Variant
Dim b(2) As String

    '条件
    b(0) = "りんご"
    b(1) = "ばなな"
    b(2) = "めろん"
    
    '配列用
    a = Array()
    j = 0
    
    '2~15行目までループ
    For i = 2 To 15
        
        '該当する値を、配列aに格納
        If Cells(i, 2).Value <> b(0) And Cells(i, 2).Value <> b(1) And Cells(i, 2).Value <> b(2) Then
            ReDim Preserve a(j)
            a(j) = Cells(i, 2).Value
            j = j + 1
        End If
    Next i

    'フィルタ抽出
    ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
            Field:=2, _
            Criteria1:=a, Operator:=xlFilterValues
            
End Sub
マクロ実行後

B列で「りんご」「ばなな」「めろん」を除くデータを抽出します。

[Field:2] にて列番号を指定します。(B列の列番号は ”2” )


 
 
 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】オートフィルタ処理を自動化する使用例まとめ
 

【エクセルマクロ】オートフィルタ処理を自動化:超便利27選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説