【Excel VBA】AutoFilterで複数条件を指定してデータを絞り込む方法
みなさんこんにちは。
Excel VBAで一覧データを扱っていると、商品名や担当者、地域などの条件を指定して必要なデータだけを表示したい場面があるかと思います。
このような場合は、ExcelのオートフィルターをVBAから操作できるAutoFilterが便利です。
今回は、AutoFilterで1条件・OR条件・複数列条件を指定してデータを絞り込む方法をご紹介したいと思います。
この記事はこんな人におすすめ
- VBAからオートフィルターを操作したい人
- Criteria1・Criteria2の使い方を知りたい人
- 複数条件で一覧データを絞り込みたい人
今回使用する元データ
今回は、A列に商品名、B列に担当者、C列に地域、D列に売上が入力されている一覧を使用します。

基本のAutoFilterで1条件を指定する
まずは、商品名が「商品A」のデータだけを表示してみます。
Sub FilterSingleCondition()
Dim ws As Worksheet
Dim targetRange As Range
'========================================
' 対象シートと一覧範囲を取得する
'========================================
Set ws = Worksheets("Sheet1")
Set targetRange = ws.Range("A1").CurrentRegion
'========================================
' 1列目の商品名を「商品A」で絞り込む
'========================================
targetRange.AutoFilter _
Field:=1, _
Criteria1:="商品A"
End Sub
Field:=1は、対象範囲の1列目を意味します。Criteria1へ絞り込みたい条件を指定します。
Criteria1・Criteria2でOR条件を指定する
「商品Aまたは商品B」のように、同じ列へ2つの条件を指定する場合はCriteria2とOperator:=xlOrを使用します。
targetRange.AutoFilter _
Field:=1, _
Criteria1:="商品A", _
Operator:=xlOr, _
Criteria2:="商品B"
これで、商品Aと商品Bのどちらかに一致する行だけが表示されます。

複数列へ条件を指定する
複数の列へ続けてAutoFilterを設定すると、それぞれの条件を満たすデータに絞り込めます。
'========================================
' 商品名を商品Aまたは商品Bで絞り込む
'========================================
targetRange.AutoFilter _
Field:=1, _
Criteria1:="商品A", _
Operator:=xlOr, _
Criteria2:="商品B"
'========================================
' さらに地域を「東京」で絞り込む
'========================================
targetRange.AutoFilter _
Field:=3, _
Criteria1:="東京"
この場合は、「商品Aまたは商品B」に該当し、さらに地域が「東京」のデータだけが表示されます。

フィルターを解除する
絞り込み条件だけを解除したい場合は、ShowAllDataを使用できます。
'========================================
' 絞り込み中の場合だけ条件を解除する
'========================================
If ws.FilterMode Then
ws.ShowAllData
End If
フィルターの▼ボタン自体も取り除きたい場合は、ws.AutoFilterMode = Falseを使用します。
最後に
いかがでしたでしょうか。
今回は、Excel VBAのAutoFilterで1条件・OR条件・複数列条件を指定してデータを絞り込む方法をご紹介しました。
Criteria1・Criteria2・Operatorを組み合わせることで、実務でもさまざまな条件に対応できます。
一覧データの絞り込みを自動化するときに、少しでも参考になれば幸いです。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。
そんな方はいつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!Webスクレイピング以外にもWebアプリの開発サービスも出品しております。
こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、
お気軽にご相談ください。
スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?
