この記事で分かること
- FILTER 関数の基本的な使い方
- オートフィルター(手動フィルター)と何が違うか
- 複数条件の指定方法(AND・OR)
- 抽出結果が0件のときの対処方法
「フィルターをかけるたびに元データが見づらくなる」「条件を変えるたびに手動でフィルターをかけ直している」という方に向けて書いています。
どんな場面で使うか
- 元データを変えずに、条件に合う行だけ別のシートや別の場所に常に表示しておきたい
- 複数の条件(エリアが東京、かつ売上が10万以上)で絞り込んだ結果を自動更新したい
- フィルターをかけた結果をそのままグラフや集計の元データにしたい
- ドロップダウンで選んだ条件に応じて表示内容が自動的に変わる仕組みを作りたい
基本説明
この記事では、次のような「売上データ」シートを例に使います(約90行あるうちの先頭部分です)。
| A: 日付 | B: 担当者 | C: エリア | D: 商品名 | E: カテゴリ | F: 数量 | G: 売上金額 |
|---|---|---|---|---|---|---|
| 2025/01/06 | 田中 | 東京 | 商品A | 電子機器 | 10 | 50000 |
| 2025/01/07 | 佐藤 | 大阪 | 商品B | 文具 | 5 | 15000 |
| 2025/01/08 | 鈴木 | 名古屋 | 商品C | 食品 | 8 | 24000 |
| … |
オートフィルターとの違い
オートフィルター(「ホーム」タブ → 「フィルター」)は、元のデータ範囲の行を表示・非表示にする機能です。元データ自体は変わりませんが、フィルター条件を変えるたびに手動で操作が必要です。
FILTER 関数は、条件に合う行を別の場所に抽出して表示する関数です。
| オートフィルター | FILTER 関数 | |
|---|---|---|
| 元データへの影響 | 行を隠す(元データはそのまま) | 影響しない |
| 条件変更 | 手動で再設定 | セル参照を使えば自動更新 |
| 結果を別の場所に置く | できない | できる |
| 複数シートで同じ条件を使う | それぞれ設定が必要 | 数式をコピーするだけ |
| 対応バージョン | 全バージョン | M365・Excel 2021以降 |
手順
基本の書き方
書式:
=FILTER(配列, 含む, [空の場合])
- 配列: 抽出する元データの範囲
- 含む: TRUE/FALSE の配列(TRUE の行が抽出される)
- 空の場合: 条件に合う行がない場合の表示(省略すると
#CALC!エラー)
使用例: 担当者が「田中」の行だけ抽出する
=FILTER(A2:G100, B2:B100="田中", "該当なし")
B列が「田中」の行だけが、A〜G列の値ごと抽出されます。スピル機能により結果が複数行に展開されます。
結果のイメージ(数式を入れたセルから下に展開されます):
| 日付 | 担当者 | エリア | 商品名 | カテゴリ | 数量 | 売上金額 |
|---|---|---|---|---|---|---|
| 2025/01/06 | 田中 | 東京 | 商品A | 電子機器 | 10 | 50000 |
| 2025/01/09 | 田中 | 東京 | 商品A | 電子機器 | 12 | 60000 |
| 2025/01/16 | 田中 | 東京 | 商品C | 食品 | 4 | 12000 |
| … |
サンプルデータでは「田中」の行が22行あるため、22行すべてが展開されます。
AND 条件(〜かつ〜)
複数の条件を * でつなぐと AND 条件になります。
「エリアが東京」かつ「売上が5万以上」の行を抽出:
=FILTER(A2:G100, (C2:C100="東京") * (G2:G100 >= 50000), "該当なし")
* で各条件を掛け合わせます。両方が TRUE(=1)の場合のみ結果が1になり、抽出されます。
結果のイメージ:
| 日付 | 担当者 | エリア | 商品名 | カテゴリ | 数量 | 売上金額 |
|---|---|---|---|---|---|---|
| 2025/01/06 | 田中 | 東京 | 商品A | 電子機器 | 10 | 50000 |
| 2025/01/09 | 田中 | 東京 | 商品A | 電子機器 | 12 | 60000 |
| 2025/01/28 | 田中 | 東京 | 商品A | 電子機器 | 20 | 100000 |
| … |
「東京」かつ「5万以上」を満たす行だけ(サンプルでは15行)が展開されます。
OR 条件(〜または〜)
複数の条件を + でつなぐと OR 条件になります。
「エリアが東京」または「エリアが大阪」の行を抽出:
=FILTER(A2:G100, (C2:C100="東京") + (C2:C100="大阪"), "該当なし")
+ で条件を足し合わせます。いずれか1つでも TRUE(=1以上)であれば抽出されます。
サンプル例
ドロップダウンと組み合わせて条件を切り替える
I1 セル(データ範囲 A〜G列の外側)にドロップダウンで担当者名を選択できるようにしておき、FILTER でその担当者の行だけを表示します。
=FILTER(A2:G100, B2:B100=I1, "データなし")
I1 の値が変わると抽出結果が自動で更新されます。たとえば I1 で「佐藤」を選ぶと、結果が次のように切り替わります。
| 日付 | 担当者 | エリア | 商品名 | カテゴリ | 数量 | 売上金額 |
|---|---|---|---|---|---|---|
| 2025/01/07 | 佐藤 | 大阪 | 商品B | 文具 | 5 | 15000 |
| 2025/01/14 | 佐藤 | 大阪 | 商品A | 電子機器 | 7 | 35000 |
| 2025/01/20 | 佐藤 | 大阪 | 商品D | 日用品 | 6 | 18000 |
| … |
SORT と組み合わせて並べ替えも同時に行う
抽出結果を売上金額の降順で表示する:
=SORT(FILTER(A2:G100, C2:C100="東京", "該当なし"), 7, -1)
FILTER で抽出した結果を SORT で並べ替えています。
特定の列だけ抽出する
全列ではなく特定の列だけを抽出したい場合は、元データの範囲を絞ります。
B列(担当者)とG列(売上金額)だけを抽出する場合 — FILTER の第1引数で列を指定します。列が隣接していない場合は CHOOSECOLS 関数を組み合わせます(M365のみ):
=FILTER(CHOOSECOLS(A2:G100, 2, 7), C2:C100="東京", "該当なし")
よくあるエラー
#CALC! エラーが出る
条件に合う行が1つもない場合に起きます。第3引数(空の場合)を必ず指定しておきましょう。
=FILTER(A2:G100, C2:C100="東京", "該当データなし")
#SPILL! エラーが出る
FILTER はスピル関数です。結果が展開される先のセルに値が入っているとこのエラーが出ます。展開先を空にしてください。
AND 条件で結果が出ない
各条件式を () で囲み忘れている場合に起きます。演算子の優先順位の関係で意図しない計算になることがあります。各条件は必ず括弧で囲みましょう。
誤り例:
=FILTER(A2:G100, C2:C100="東京" * G2:G100 >= 50000, "") ← 括弧なし
正しい例:
=FILTER(A2:G100, (C2:C100="東京") * (G2:G100 >= 50000), "")
まとめ
- FILTER 関数は元データを変えずに条件に合う行だけを別の場所に表示できる
- AND 条件は
*、OR 条件は+でつなぐ - 第3引数(空の場合)は必ず指定しておくと
#CALC!エラーを防げる - SORT や UNIQUE と組み合わせることで、絞り込み・重複除去・並べ替えを1つの数式で完結できる
ドロップダウンと組み合わせると「選んだ条件に応じてリストが自動更新される」という動的な表が作れます。手動フィルターの代わりに使い始めると、作業の自動化が一段階進みます。
対応バージョン: Microsoft 365 または Excel 2021 以降
関連記事
- 【Excel 関数】SORT・UNIQUE・FILTERで変わるリスト管理 — スピル関数入門 — FILTER を SORT・UNIQUE と組み合わせた使い方の入門
- 【Excel】XLOOKUP関数とテーブルを使用した簡単なデータ検索 — 条件に合う1行を取り出したい場合は XLOOKUP との使い分けを
サンプルファイル
記事中で使用しているサンプルデータはこちらからダウンロードできます。
