この記事で分かること
- 条件に合う行を別の場所に抜き出す FILTER 関数の書き方
- オートフィルター(手動フィルター)と何が違うか
- 複数条件の指定方法(AND・OR)
#CALC!・#SPILL!が出たときの直し方
条件に合う行を関数で抜き出すなら、FILTER 関数を使います。 元の表はそのままで、条件に合う行だけが数式のセルから下に並びます。

完成形。I1 で担当者を選ぶと、その人の行だけが I2 から下に並ぶ
この記事の最後で作る表です。I1 で選ぶ担当者を変えると、下の行も自動で入れ替わります。
どんな場面で使うか
- 元データを変えずに、条件に合う行だけを別の場所に表示しておきたい
- 「エリアが東京、かつ売上が5万以上」のような複数条件の結果を自動で更新したい
- 条件を変えるたびにフィルターをかけ直す作業をやめたい
- ドロップダウンで選んだ条件に合わせて、表示する行を切り替えたい
基本説明
使う元データ
この記事では、次の「売上データ」シートを使います。A〜G列に日付・担当者・エリア・商品名・カテゴリ・数量・売上金額が92行あります(画像は先頭の部分)。

元データ。「売上データ」シートの A〜G列
表はテーブルになっているので、見出しにフィルターボタンが出ています。同じ表はサンプルファイル(記事末尾)で試せます。
FILTER の書き方
=FILTER(配列, 含む, [空の場合])
| 引数 | 意味 |
|---|---|
| 配列 | 抽出する元データの範囲 |
| 含む | 条件。TRUE になった行だけが抽出される |
| 空の場合 | 条件に合う行が1つもないときの表示(省略すると #CALC! エラー) |
オートフィルターとの違い
オートフィルター(「データ」タブの「フィルター」)は、元の表の行を隠して見せる機能です。FILTER 関数は、条件に合う行を別の場所に書き出す関数です。
| オートフィルター | FILTER 関数 | |
|---|---|---|
| 元データへの影響 | 行を隠す(元データはそのまま) | 影響しない |
| 条件変更 | 手動で再設定 | セル参照を使えば自動更新 |
| 結果を別の場所に置く | できない | できる |
| 複数シートで同じ条件を使う | それぞれ設定が必要 | 数式をコピーするだけ |
| 対応バージョン | 全バージョン | M365・Excel 2021以降 |
その場で目で確かめるだけならオートフィルター、抽出した結果を残して使い回すなら FILTER 関数が向いています。
手順
1. 担当者が「田中」の行だけを抜き出す
- I列の列番号をクリックして、列全体を選ぶ
- 「ホーム」タブの表示形式の一覧から「短い日付形式」を選ぶ
- I2 セルを選び、次の数式を入力して Enter キーを押す
=FILTER(A2:G100, B2:B100="田中", "該当なし")

B列が「田中」の行だけが I2 から下に並んだ結果
B列が「田中」の22行が、A〜G列と同じ並びで表示されます。
数式が入っているのは I2 だけです。I3 から下は、結果に合わせて自動で広がった部分(スピル)です。1〜2で I列を日付の形式にしておくのは、結果の日付が数値で表示されるのを防ぐためです。
2. 複数の条件で絞り込む(AND)
「エリアが東京」かつ「売上金額が5万以上」の行を抜き出します。I2 の数式を次のように書き換えます。
=FILTER(A2:G100, (C2:C100="東京") * (G2:G100 >= 50000), "該当なし")

エリアが東京かつ売上金額が5万以上の行を抜き出した結果
両方の条件を満たす15行が表示されます。
条件をそれぞれ ( ) で囲み、* でつなぐと「かつ」になります。両方が TRUE(=1)の行だけが、掛けた結果も1になるからです。
3. どれか1つに合えば抜き出す(OR)
「エリアが東京」または「エリアが大阪」の行を抜き出します。
=FILTER(A2:G100, (C2:C100="東京") + (C2:C100="大阪"), "該当なし")

エリアが東京または大阪の行を抜き出した結果
東京と大阪の56行が表示されます(画像は先頭の部分)。
+ でつなぐと「または」になります。どちらか1つでも TRUE なら、足した結果が1以上になるからです。
サンプル例
ドロップダウンで担当者を切り替える(冒頭の完成形)
- I1 セルを選ぶ
- 「データ」タブの「データの入力規則」を選ぶ
- 「入力値の種類」で「リスト」を選ぶ
- 「元の値」に
田中,佐藤,鈴木,山田,伊藤と入力し、「OK」を押す

データの入力規則で I1 にリストを設定したところ
I1 の右に出る ▼ から担当者を1人選びます。続けて、I2 の数式を次のように書き換えます。
=FILTER(A2:G100, B2:B100=I1, "データなし")

I1 で鈴木を選んだときの抽出結果
I1 で「鈴木」を選ぶと、鈴木さんの18行に切り替わります。
抽出結果を売上金額の大きい順に並べる(SORT)
=SORT(FILTER(A2:G100, C2:C100="東京", "該当なし"), 7, -1)

東京の行を売上金額の大きい順に並べた結果
東京の36行が、売上金額の大きい順に並びます(画像は先頭の部分)。
7 は抽出結果の7列目(売上金額)、-1 は大きい順(降順)という意味です。
必要な列だけを抜き出す(CHOOSECOLS)
担当者(2列目)と売上金額(7列目)だけにしたいときは、CHOOSECOLS 関数で列を選んでから FILTER に渡します(Microsoft 365・Excel 2024 以降)。
=FILTER(CHOOSECOLS(A2:G100, 2, 7), C2:C100="東京", "該当なし")

東京の行の担当者と売上金額の2列だけを抜き出した結果
東京の36行について、担当者と売上金額の2列だけが表示されます。
隣り合った列だけなら、第1引数を B2:C100 のように狭めるだけで済みます。
よくあるエラー
#CALC! と表示される
原因: 条件に合う行が1つもなく、第3引数(空の場合)を省略している。
直し方: 第3引数を必ず指定する。
=FILTER(A2:G100, C2:C100="東京", "該当データなし")
#SPILL! と表示される
原因: 結果が広がる先のセルに、値が入っている。下の画像では K5 に値があるため、I2 が #スピル! になっています(日本語版の Excel では #スピル!、英語版では #SPILL! と表示されます)。

K5 に値があるため I2 が SPILL エラーになった状態
直し方: 結果が広がる先のセルを空にする。
AND 条件で結果が出ない
原因: 条件を ( ) で囲んでいない。演算子の優先順位の関係で、意図しない計算になることがあります。
誤り例:
=FILTER(A2:G100, C2:C100="東京" * G2:G100 >= 50000, "") ← 括弧なし
直し方: 条件は1つずつ ( ) で囲む。
=FILTER(A2:G100, (C2:C100="東京") * (G2:G100 >= 50000), "")
日付が5桁の数値で表示される
原因: 結果のセルに日付の表示形式が付いていない。
直し方: 手順1の1〜2のとおり、I列を「短い日付形式」にする。列幅が狭くて #### になったら、I列とJ列の境界をダブルクリックして広げます。
まとめ
- 条件に合う行を関数で抜き出すなら FILTER 関数。元データを変えずに、別の場所へ結果を並べられる
- AND 条件は
*、OR 条件は+でつなぎ、条件はそれぞれ( )で囲む - 第3引数(空の場合)を指定しておくと
#CALC!エラーを防げる - SORT で並べ替え、CHOOSECOLS で列の絞り込みまで、1つの数式で済ませられる
ドロップダウンと組み合わせると、選んだ条件に合わせて行が入れ替わる表が作れます。手動のフィルターをかけ直す作業を、まずは1つ置き換えてみてください。
対応バージョン: Microsoft 365 または Excel 2021 以降(CHOOSECOLS を使う例だけ Excel 2024 以降)
関連記事
- 【Excel 関数】SORT・UNIQUE・FILTERで変わるリスト管理 — スピル関数入門 — FILTER を SORT・UNIQUE と組み合わせた使い方の入門
- 【Excel 関数】UNIQUE + SORT の組み合わせでマスターリストを自動生成する — ドロップダウンの元になる担当者リストを、重複なしで自動で作る
- 【Excel 関数】XLOOKUP × FILTER で複数条件の参照をシンプルにする — 条件に合う1行を取り出したいときの XLOOKUP との使い分け
サンプルファイル
記事中で使用しているサンプルデータはこちらからダウンロードできます。

