エクセルマクロで、オートフィルタで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” )
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】オートフィルタ処理を自動化する使用例まとめ
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説