Excel VBAで複数条件フィルターを使いこなす方法!サンプルコード付き解説

Excelで大量のデータを扱う際、「特定の条件に合う行だけを抽出したい」という場面は多くあります。例えば「担当者がAさんで、かつ売上が100万円以上」といった複数の条件を組み合わせて検索したい時、手作業でフィルターをかけるのは効率が悪いです。そこで便利なのがVBAを使った自動フィルターの活用です。VBAを使えば、複数条件の設定や繰り返し処理も自動化でき、業務効率を大きく改善できます。本記事では、Excel VBAで複数条件フィルターを使う方法を、サンプルコードとともにわかりやすく解説します。初心者の方でも理解できるように、基礎から応用まで順を追って説明しますので、ぜひ業務に活かしてください。


Excelのオートフィルターとは

Excelには標準で「オートフィルター」という機能が用意されています。これは列ごとにプルダウンを表示し、特定の条件でデータを絞り込む機能です。例えば「商品名がリンゴのデータだけを表示する」といった使い方ができます。
しかし手作業でフィルターを設定する場合、毎回プルダウンを開いて条件を指定しなければならず、大量のデータ処理には向きません。そこで登場するのがVBAによるフィルターの自動化です。VBAを使えば、条件をプログラムに書いておき、ワンクリックで複数条件を適用できます。


VBAでフィルターを設定する基本構文

VBAでオートフィルターを使うには、以下のような構文を使います。

Range("A1:D100").AutoFilter Field:=2, Criteria1:="=東京"

この例では、A1:D100の範囲にフィルターを設定し、2列目(B列)のデータが「東京」と一致するものだけを抽出します。
ポイントは以下の2つです。

  • Field … どの列にフィルターをかけるか(左から数えて何列目かを指定)
  • Criteria1 … 条件を指定する引数

これを組み合わせることで、複数の条件も設定できるようになります。


複数条件を指定する方法

複数条件を扱うには、Criteria1Criteria2を使います。例えば「担当者がAさん、またはBさん」の場合は以下のように書けます。

Range("A1:D100").AutoFilter Field:=3, Criteria1:="Aさん", Operator:=xlOr, Criteria2:="Bさん"

ここで重要なのがOperatorの指定です。

  • xlOr … 「または」の条件
  • xlAnd … 「かつ」の条件

このように、フィルターで複数条件を組み合わせることができます。


具体例:売上データから抽出する

例えば以下のような売上表があったとします。

日付商品担当者売上
1/5リンゴAさん120
1/6バナナBさん80
1/7リンゴAさん200
1/8バナナCさん150

ここから「担当者がAさんで、かつ売上が100以上」を抽出する場合のコードは以下の通りです。

Sub FilterExample()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ws.Range("A1:D100").AutoFilter
    ws.Range("A1:D100").AutoFilter Field:=3, Criteria1:="Aさん"
    ws.Range("A1:D100").AutoFilter Field:=4, Criteria1:=">=100"
End Sub

これにより、Aさんのデータかつ売上が100以上の行だけが表示されます。


複数の値をまとめて指定する方法

Criteria1とCriteria2では最大2つまでしか条件を指定できません。もし「Aさん、Bさん、Cさん」をまとめて指定したい場合は、配列を使います。

Range("A1:D100").AutoFilter Field:=3, Criteria1:=Array("Aさん", "Bさん", "Cさん"), Operator:=xlFilterValues

このように書くと、3つ以上の条件を一度に設定できます。実務ではこの書き方がとても便利です。


部分一致での複数条件フィルター

完全一致だけでなく、部分一致でも複数条件を設定できます。例えば「商品名に『リン』を含むもの、または『バナナ』を含むもの」という場合は次のように書きます。

Range("A1:D100").AutoFilter Field:=2, Criteria1:="=*リン*", Operator:=xlOr, Criteria2:="=*バナナ*"

ワイルドカードを使うことで、柔軟に条件を設定することができます。

  • * … 任意の文字列
  • ? … 任意の1文字

応用:日付条件でのフィルター

日付を扱う場合も複数条件が必要になることがあります。例えば「2023/1/1以上、かつ2023/1/31以下」のデータを抽出する場合は次の通りです。

Range("A1:D100").AutoFilter Field:=1, Criteria1:=">=2023/1/1", Operator:=xlAnd, Criteria2:="<=2023/1/31"

このように書くことで、1月分のデータだけを抽出できます。


フィルターを解除する方法

フィルターを解除したいときは以下のように書きます。

ActiveSheet.AutoFilterMode = False

これでシート全体のフィルターが解除され、すべてのデータが表示されます。


実務での活用シーン

複数条件フィルターは、さまざまな業務で役立ちます。

  • 営業管理 … 特定の担当者、売上額、地域を組み合わせて抽出
  • 在庫管理 … 商品カテゴリと在庫数でフィルタリング
  • 経理処理 … 期間と金額条件で経費精算データを抽出

繰り返し条件を指定する作業を自動化すれば、毎日の集計作業が大幅に効率化されます。


まとめ

本記事では、Excel VBAを使った複数条件フィルターの方法について解説しました。
ポイントをまとめると以下の通りです。

  • AutoFilterで複数条件を指定できる
  • Criteria1とCriteria2、Operatorで条件を組み合わせる
  • 配列を使えば3つ以上の条件も指定可能
  • ワイルドカードで部分一致検索ができる
  • 日付条件や数値条件にも対応できる

複数条件を使いこなせば、業務の効率化につながります。ぜひ実際の仕事に活かしてみてください。

タイトルとURLをコピーしました