エクセルマクロで、オートフィルタで特定文字を含むデータを抽出するVBAコードをご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。
オートフィルタ「~含む」
以下のExcelVBAを実行すると、オートフィルタで特定の文字を含むデータを抽出します。
Sub オートフィルタで特定文字を含むものを抽出()
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=3, _
Criteria1:="*川*"
End Sub
C列で「川」を含むデータのみ表示しました。
ワイルドカード(* アスタリスク)を使用して条件設定しています。
[Field:3] にて列指定します。(C列の列番号は ”3” )
オートフィルタ「~含む」変数使用
以下のExcelVBAを実行すると、オートフィルタで指定文字を含むデータを表示します。
Sub オートフィルタで含む条件()
Dim Target As String
Target = "*川*"
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=3, _
Criteria1:=Target
End Sub
フィルターの条件に、変数を使用したパターンです。
オートフィルタ「~含む」セル参照
以下のExcelVBAを実行すると、セルを参照して条件設定をします。
Sub オートフィルタで任意の文字を含むデータ抽出()
Dim Target As Range
Set Target = Range("F1")
ActiveSheet.Range("A1").CurrentRegion.AutoFilter _
Field:=3, _
Criteria1:="*" & Target & "*"
End Sub
フィルターの条件に、セル参照をしているパターンです。
オートフィルタ「~含む」配列使用
以下のExcelVBAを実行すると、配列Arrayを使用してデータを絞り込みします。
Sub オートフィルタで複数条件を含むリスト抽出()
Dim Target_Word() As Variant
Target_Word = Array("川", "福")
ActiveSheet.Range("A1").AutoFilter Field:=3, Criteria1:= _
"*" & Target_Word(0) & "*", _
Operator:=xlOr, Criteria2:="*" & Target_Word(1) & "*"
End Sub
C列で「川」か「福」を含むデータを抽出します。
1列に2つ以上の複数条件を設定しています。
オートフィルタ「~含む」配列使用
以下のExcelVBAを実行すると、配列Arrayを使用してデータを絞り込みします。
Sub オートフィルタで含む複数条件()
Dim Target_Word() As Variant
Dim i As Long
Target_Word = Array("*原*", "*福*")
For i = 1 To 2
If i = 1 Then
ActiveSheet.Range("A1").CurrentRegion. _
AutoFilter Field:=1, Criteria1:=Target_Word(0)
Else
ActiveSheet.Range("A1").CurrentRegion. _
AutoFilter Field:=3, Criteria1:=Target_Word(1)
End If
Next i
End Sub
A列で「原」を含むデータと、C列で「福」を含むデータを抽出します。
複数列に条件設定しています。
For文を使用することで、条件によってさらに処理を追加することもできます。
オートフィルタ「~含む」複数条件
以下のExcelVBAを実行すると、オートフィルタで特定列に複数の文字を含むデータを表示します。
Sub オートフィルタで含むリスト抽出()
ActiveSheet.Range("A1").AutoFilter Field:=3, Criteria1:="=*川*", _
Operator:=xlOr, Criteria2:="=*福*"
End Sub
C列で「川」か「福」を含むデータを抽出します。
1列に2つ以上の複数条件を設定しています。
オートフィルタ「~含む」複数条件
以下のExcelVBAを実行すると、オートフィルタで特定文字を含むデータを抽出します。
Sub オートフィルタで含む複数条件()
With ActiveSheet.Range("A1")
.CurrentRegion.AutoFilter Field:=1, Criteria1:="*原*"
.CurrentRegion.AutoFilter Field:=3, Criteria1:="*福*"
End With
End Sub
A列で「原」を含むデータと、C列で「福」を含むデータを抽出します。
複数列に条件設定しています。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】オートフィルタ処理を自動化する使用例まとめ
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説