Excelフィルターで複数条件を抽出する方法|オートフィルター・詳細設定・FILTER関数を完全解説

Excelで「A列が”東京”かつB列が”営業部”」のように、複数条件でデータを絞り込みたいことはありませんか?
Excelには複数条件でフィルターする方法が3つあります。オートフィルター(手軽)、詳細設定/フィルターオプション(高度)、FILTER関数(Excel 365/2021以降)です。
本記事では、3つの方法をすべて手順付きで解説し、目的別にどれを使うべきかを明確にします。
- オートフィルターでAND条件・OR条件を設定する方法
- 3つ以上の複数条件でフィルターする方法
- 詳細設定(フィルターオプション)で複雑な条件を指定する方法
- FILTER関数で複数条件を動的にフィルターする方法
- AND条件とOR条件の違いと使い分け
- フィルターが正しく動かない場合の対処法
LINEでExcelを気軽に学べる
Excelフィルターの3つの方法と使い分け
どの方法を使うべきか、目的別に整理します。
| 方法 | 特徴 | 対応バージョン | 難易度 |
|---|---|---|---|
| オートフィルター | 手軽、ドロップダウンで選択 | 全バージョン | ★☆☆ |
| 詳細設定 | 複雑な条件、別シート抽出可 | 全バージョン | ★★☆ |
| FILTER関数 | 数式で動的抽出、元データ非破壊 | 365/2021以降 | ★★☆ |
AND条件とOR条件の違い
- AND条件: すべての条件を同時に満たす(「東京」かつ「営業部」)
- OR条件: いずれかの条件を満たす(「東京」または「大阪」)
目的別おすすめフィルター方法
| やりたいこと | おすすめ方法 |
|---|---|
| 1列で複数値を選びたい | オートフィルター |
| 2列以上のAND条件 | オートフィルター or FILTER関数 |
| 複雑なOR条件(列をまたぐ) | 詳細設定 |
| 結果を別の場所に出力 | 詳細設定 or FILTER関数 |
| 条件を頻繁に切り替えたい | FILTER関数 |
| 元データを壊さず抽出したい | FILTER関数 |
オートフィルターで複数条件を設定する方法【基本編】
ステップ1: オートフィルターを有効にする
- データ範囲内の任意のセルをクリック
- 「データ」タブ →「フィルター」をクリック
- 見出し行にドロップダウン矢印が表示される
オートフィルターのON/OFF: Ctrl + Shift + L
ステップ2: 1列で複数値を選択する(OR条件)
例: 「部署」列で「営業部」と「企画部」の両方を表示する場合
- 「部署」列のドロップダウン矢印をクリック
- 「(すべて選択)」のチェックを外す
- 「営業部」と「企画部」にチェックを入れる
- OKをクリック
ステップ3: 複数列にAND条件を設定する
例: 「部署 = 営業部」AND「地域 = 東京」の場合
- まず「部署」列で「営業部」を選択
- 次に「地域」列で「東京」を選択
- 両方の条件を満たす行のみ表示される
オートフィルターでは、複数列にフィルターを設定すると自動的にAND条件になります。OR条件を列をまたいで設定したい場合は「詳細設定」を使いましょう。
ステップ4: テキストフィルターで部分一致を設定する
- ドロップダウン矢印 →「テキストフィルター」
- 「指定の値を含む」を選択
- 条件を入力(例: 「東」→ 東京、東北がヒット)
ユーザー設定オートフィルターでは、AND/ORの切り替えが可能です。
- 「かつ(AND)」= 両方の条件を満たす
- 「または(OR)」= いずれかの条件を満たす
数値フィルター・日付フィルターの複数条件
数値フィルターの使い方
例: 売上が「10万円以上」かつ「50万円以下」のデータを抽出する場合
- 売上列のドロップダウン →「数値フィルター」
- 「指定の範囲内」を選択
- 10万〜50万を入力
「上位10件」「平均より上」なども選択可能です。
日付フィルターの使い方
例: 「2026年1月」のデータのみ表示する場合
- 日付列のドロップダウン →「日付フィルター」
- 「指定の期間内」を選択
- 開始日・終了日を指定
- 今日 / 昨日 / 明日
- 今週 / 先週 / 来週
- 今月 / 先月 / 来月
- 今四半期 / 今年
LINEでExcelを気軽に学べる
詳細設定(フィルターオプション)で複雑な条件を指定する方法
オートフィルターでは対応できない複雑な条件には、詳細設定(フィルターオプション)を使います。
詳細設定のメリット
- 3つ以上のOR条件を列をまたいで指定可能
- 条件をセルに書くので再利用しやすい
- 結果を別の場所(別シート含む)に出力可能
- ワイルドカードによる柔軟な条件指定が可能
ステップ1: 条件範囲を作成する
データとは別の場所に条件を記述します。条件の書き方によってAND/ORが決まります。
AND条件(同一行に記述):
| 部署 | 地域 |
|---|---|
| 営業部 | 東京 |
OR条件(別行に記述):
| 部署 |
|---|
| 営業部 |
| 企画部 |
AND + OR の組み合わせ:
| 部署 | 地域 |
|---|---|
| 営業部 | 東京 |
| 企画部 | 大阪 |
上記は「営業部 AND 東京」OR「企画部 AND 大阪」という意味になります。
- 同じ行 = AND条件
- 別の行 = OR条件
- フィールド名(見出し)はデータの見出しと完全一致させる
ステップ2: 詳細設定を実行する
- 「データ」タブ →「詳細設定」(並べ替えとフィルターグループ)をクリック
- 抽出先:「選択範囲内」or「指定した範囲」を選択
- リスト範囲: データ全体($A$1:$E$100 等)を指定
- 検索条件範囲: 条件を書いたセル範囲を指定
- 必要に応じて「重複するレコードは無視する」にチェック
- OKをクリック
ステップ3: 結果を別の場所に抽出する
「指定した範囲」を選択すると、抽出先を指定できます。
- 「抽出先」で「指定した範囲」を選択
- 「抽出範囲」に出力先の先頭セルを指定
- 元データはそのまま、結果だけ別の場所に表示される
抽出先は同じシート内に限定されます。別シートに出力したい場合は、抽出先のシートから操作を実行してください。
ワイルドカードで柔軟な条件を指定する
| 記号 | 意味 | 例 |
|---|---|---|
| * | 任意の文字列 | 東* → 東京、東北、東海 |
| ? | 任意の1文字 | 田?太 → 田中太、田村太 |
| ~* | *そのものを検索 | ~*印 → *印 |
FILTER関数で複数条件を動的に抽出する方法【Excel 365/2021】
FILTER関数の基本構文
=FILTER(配列, 条件, [一致しない場合])- 配列: 抽出元のデータ範囲
- 条件: TRUE/FALSEの配列
- 一致しない場合: 結果がゼロ件のとき表示する値
AND条件(*で結合)
例: 部署が「営業部」かつ地域が「東京」のデータを抽出
=FILTER(A2:E100,(B2:B100="営業部")*(C2:C100="東京"),"該当なし")条件を *(乗算)で結合するとAND条件になります。TRUE(1) * TRUE(1) = 1(TRUE)、どちらかがFALSE(0)なら結果は0(FALSE)になるためです。
OR条件(+で結合)
例: 部署が「営業部」または「企画部」のデータを抽出
=FILTER(A2:E100,(B2:B100="営業部")+(B2:B100="企画部"),"該当なし")条件を +(加算)で結合するとOR条件になります。
AND + OR の組み合わせ
例: (部署が「営業部」OR「企画部」)AND(売上が10万以上)
=FILTER(A2:E100,((B2:B100="営業部")+(B2:B100="企画部"))*(D2:D100>=100000),"該当なし")OR条件を()でグループ化してから、AND条件と*で結合するのがコツです。
FILTER関数 + SORT関数で並べ替えも同時に
=SORT(FILTER(A2:E100,(B2:B100="営業部")*(D2:D100>=100000)),4,-1)FILTER関数の結果をSORT関数で囲むことで、抽出結果を4列目(売上)で降順に並べ替えできます。
| FILTER関数の条件記号 | 意味 | 使用例 |
|---|---|---|
| *(乗算) | AND条件 | (条件1)*(条件2) |
| +(加算) | OR条件 | (条件1)+(条件2) |
| ()でグループ化 | 条件のまとまり | ((条件1)+(条件2))*(条件3) |
フィルター操作の便利なテクニック
フィルター結果の件数をカウントする
=SUBTOTAL(103,A2:A100)SUBTOTAL関数はフィルターで非表示の行を自動的に除外して計算します。
| 関数番号 | 機能 |
|---|---|
| 101 | AVERAGE(非表示除外) |
| 102 | COUNT(非表示除外) |
| 103 | COUNTA(非表示除外) |
| 109 | SUM(非表示除外) |
フィルター結果をコピー&ペーストする
- フィルター適用状態でデータを選択(
Ctrl+A) - コピー(
Ctrl+C) - 別シートにペースト → 表示行のみコピーされる
フィルターをすべて解除する
- 全列一括解除: 「データ」タブ →「クリア」
- ショートカット:
Alt → A → C(順に押す) - 個別解除: 各列のドロップダウン →「フィルターをクリア」
よくあるトラブルと対処法
フィルターの矢印が表示されない
| 原因 | 対処法 |
|---|---|
| データ範囲内に空白行がある | 空白行を削除する |
| シートが保護されている | シート保護を解除する |
| セルが結合されている | 結合を解除する |
フィルターで一部のデータが表示されない
- 原因1: セルの表示形式が異なる(数値とテキストの混在)
- 原因2: セルに余分な空白がある →
TRIM関数で除去 - 対処: 「データ」タブ →「区切り位置」→「完了」で形式を統一
詳細設定で「リスト範囲の先頭行には見出しが必要です」エラー
- 原因: リスト範囲の指定が正しくない
- 対処: 見出し行を含む範囲全体を正確に指定する
- 条件範囲の見出しもデータの見出しと完全一致させる
FILTER関数で#SPILL!エラーが出る
- 原因: 出力先のセルに既にデータがある
- 対処: 出力先のセルを空にする
LINEでExcelを気軽に学べる
複数フィルターをVBAで一括設定する方法
AutoFilterの設定をVBAマクロで自動化すれば、複数条件のフィルターを一括で適用できます。
' 複数フィルターを一括設定するマクロ
Sub フィルター一括設定()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.AutoFilterMode = False
ws.Range("A1").AutoFilter Field:=1, Criteria1:="営業"
ws.Range("A1").AutoFilter Field:=3, _
Criteria1:=">=100000"
MsgBox "フィルターを設定しました"
End Sub
Sub フィルター一括設定()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.AutoFilterMode = False
ws.Range(“A1”).AutoFilter Field:=1, Criteria1:=“営業”
ws.Range(“A1”).AutoFilter Field:=3, _
Criteria1:=“>=100000”
MsgBox “フィルターを設定しました”
End Sub
| A | B | C | |
|---|---|---|---|
| 1 | 部署 | 名前 | 売上 |
| 2 | 営業 | 田中 | 150,000 |
| 5 | 営業 | 山田 | 180,000 |
| 7 | 営業 | 伊藤 | 120,000 |
☝ 複数条件のフィルターもVBAで一括設定できます
まとめ
| 方法 | AND条件 | OR条件 | 別場所出力 | 動的更新 | 難易度 |
|---|---|---|---|---|---|
| オートフィルター | ○ | ○(同一列) | × | × | ★☆☆ |
| 詳細設定 | ○ | ○ | ○ | × | ★★☆ |
| FILTER関数 | ○ | ○ | ○ | ○ | ★★☆ |
まずはオートフィルターの複数列AND条件をマスターしましょう。手軽に使えて、多くの場面で十分に対応できます。
複雑なOR条件や別シートへの出力が必要になったら詳細設定を、条件を頻繁に切り替えたい場合や元データを壊さず抽出したい場合はFILTER関数を活用してください。
