【VBA】Excelで複数条件をフィルターする方法(AND型・OR型の両方に対応)
この記事では、ExcelのVBAを使って、データセットから複数の条件でフィルター(抽出)する方法を解説します。AND型とOR型、両方の複数条件に対応したフィルター手法を学ぶことができます。
VBAでExcelの複数条件をフィルターする2つの簡単な方法
ここでは、「Martin Bookstore」という書店の書籍名・書籍の種類・価格をまとめたデータセットを使用します。

今回の目標は、このデータセットに対してVisual Basic for Applications(VBA)を使い、複数の条件でフィルターを行うことです。
1. VBAでAND型の複数条件をフィルターする
まずは、任意のデータセットに対してAND型の複数条件でフィルターを実行できるマクロを作成します。
例として、「小説(Novel)」であり、かつ価格が$25.00以上の本を抽出してみましょう。
⧭ VBAコード:
Sub Filter_Multiple_Criteria_AND_Type()
Count = 1
For i = 1 To Selection.Rows.Count
If Selection.Cells(i, 2) = "Novel" And Selection.Cells(i, 3) >= 25 Then
For j = 1 To Selection.Columns.Count
Range("F4").Cells(Count, j) = Selection.Cells(i, j)
Next j
Count = Count + 1
End If
Next i
End Sub

⧭ 実行結果:
ワークシート上でデータセットを選択し、このマクロ(Filter_Multiple_Criteria_AND_Type)を実行します。

すると、セルF4を起点とする新しい範囲に、「小説」かつ価格が$25.00以上の本だけが抽出されます。

⧭ ポイント解説:
- コードの4行目では、Cells(i, 2) = "Novel" と Selection.Cells(i, 3) >= 25 を使用しています。

- これは「2列目(書籍の種類)が"Novel"であること」かつ「3列目(価格)が$25.00以上であること」という条件を意味します。
- これらの条件は、必要に応じて自由に変更できます。
- 例えば、「価格が$20.00以上$30.00以下の本」を抽出したい場合は、Selection.Cells(i, 3) >= 20 と Selection.Cells(i, 3) <= 30 のように指定します。
- また、6行目でRange("F4")としているのは、抽出結果をセルF4から表示させたいためです。

- 出力先のセルも、用途に合わせて適宜変更してください。
関連記事: Excelで複数条件をフィルターする方法
あわせて読みたい記事
- Excelでユーザー設定フィルターを使う方法(5つの方法)
- Excelにフィルターを追加する方法(4つの方法)
- Excelフィルターのショートカットキー(実例付き3つの活用術)
- Excelでテキストフィルターを使う方法(5つの具体例)
2. VBAでOR型の複数条件をフィルターする
次に、任意のデータセットに対してOR型の複数条件でフィルターを実行できるマクロを作成します。
今度は例として、「小説(Novel)」であるか、または価格が$25.00以上である本を抽出してみましょう。
⧭ VBAコード:
Sub Filter_Multiple_Criteria_Or_Type()
Count = 1
For i = 1 To Selection.Rows.Count
If Selection.Cells(i, 2) = "Novel" Or Selection.Cells(i, 3) >= 25 Then
For j = 1 To Selection.Columns.Count
Range("F4").Cells(Count, j) = Selection.Cells(i, j)
Next j
Count = Count + 1
End If
Next i
End Sub

⧭ 実行結果:
ワークシート上でデータセットを選択し、このマクロ(Filter_Multiple_Criteria_OR_Type)を実行します。

すると、セルF4を起点とする新しい範囲に、「小説」または価格が$25.00以上の本がすべて抽出されます。

⧭ ポイント解説:
- コードの4行目では、Selection.Cells(i, 2) = "Novel" または Selection.Cells(i, 3) >= 25 を使用しています。

- これは「2列目(書籍の種類)が"Novel"であること」または「3列目(価格)が$25.00以上であること」という条件を意味します。
- 条件の内容は、必要に応じて自由に変更できます。
- また、6行目でRange("F4")としているのは、抽出結果をセルF4から表示させたいためです。

関連記事: Excelで複数のフィルターを適用する方法【標準機能+VBA】
覚えておきたいポイント
今回は2つの条件を使用しましたが、条件の数はいくつでも追加できます。すべての条件を、抽出したい内容に応じてAndまたはOrでつなげるだけでOKです。
まとめ
これらの方法を使えば、VBAでAND型・OR型どちらの複数条件でも、Excelのデータを簡単にフィルターできます。ご不明な点があれば、お気軽にお問い合わせください。最新の記事や更新情報については、当サイトExcelDemyもぜひご覧ください。
さらに学びたい方へ
- Excelで複数列を個別にフィルターする方法
- Excelフィルターで複数項目を検索する方法(2つの方法)
- Excelでフィルターを解除する方法(5つの簡単&スピーディーな方法)
- Excelで日付を条件にフィルターする方法(4つのクイックメソッド)
-
Excelで複数の色を条件にデータをフィルターする2つの簡単な方法
この記事では、Microsoft Excelで複数の色を条件にデータをフィルターする方法を解説します。通常、特定の列を複数の色でフィルターすると、他の列も最初に適用したフィルターの影響を受けてしまい、思い通りの結果が得られないことがあります。色による複数条件のフィルタリングは少し工夫が必要ですが、この記事では誰でも実践できる2つの方法を、わかりやすい手順とともに紹介します。 Excelで複数の色を条件にフィルターする2つの方法 ここでは、営業担当者の氏名、担当地域、売上高がそれぞれB列・C列・E列に入力されたサンプルデータセットを使用します。このデータには、セルごとに異なる色が設定されています
-
Excelで色とテキストの両方を条件にフィルターをかける方法(3つの簡単なステップ)
Excelでは、セルの色でフィルターをかけることも、特定のテキストで絞り込むことも簡単に行えます。しかし、この2つの条件を組み合わせて同時にフィルターをかける直接的な機能は用意されていません。本記事では、その回避策となる実践的な方法をわかりやすく解説します。手順は短く、初心者の方でもすぐに実践できる内容です。ぜひ最後までご覧ください。 練習用ワークブックは、下のダウンロードボタンから入手できます。 Excelで色とテキストの両方を使ってフィルターをかける手順 以下のようなデータセットを想定します。ここでは、色付きのセルは空白になっています。E列の「Yes」というテキストと、黄色く塗られたセル