概要
「条件に一致する行が複数あるから、全部まとめて取り出したい」
「VLOOKUP では1件しか返せないけど、一覧で欲しい」
そんなときに最強なのが FILTER 関数です。
FILTER は
“条件に合う行だけを丸ごと抽出して一覧化する”
という、Excel の中でもトップクラスに便利な関数です。
複数一致を一覧で返す処理は、FILTER の本領。
初心者でも扱いやすいように、テンプレート形式で丁寧に解説します。
FILTER の基本
書式
=FILTER(元データ範囲, 条件, [該当なしのとき])
元データ範囲
抽出したい表(行・列を含む範囲)
条件
TRUE/FALSE の判定式
例:A2:A100=F2(担当者が F2 の行だけ TRUE)
該当なしのとき(省略可)
条件に合う行がない場合に表示する文字列
例:「該当なし」
単一条件で複数一致を一覧取得する
例:担当者が F2 の行だけ抽出
A列:日付
B列:担当者
C列:商品
D列:金額
F2 に担当者名(例:佐藤)が入っているとします。
=FILTER(A2:D100, B2:B100=F2)
意味:
- A2:D100 → 抽出したい元データ
- B2:B100=F2 → 担当者が F2 の行だけ TRUE
- TRUE の行だけ一覧で返す
結果は縦方向にスピル(自動展開)され、
「担当者=佐藤」の行だけが一覧で表示されます。
複数条件で複数一致を一覧取得する(AND 条件)
例:担当者=F2 かつ 商品=G2 の行だけ抽出
=FILTER(A2:D100,
(B2:B100=F2) * (C2:C100=G2))
ポイント:
*は AND(かつ)- 両方 TRUE の行だけ抽出
OR 条件で複数一致を一覧取得する
例:担当者が F2 または G2 の行を抽出
=FILTER(A2:D100,
(B2:B100=F2) + (B2:B100=G2))
ポイント:
+は OR(または)- どちらか TRUE の行を抽出
数値条件で複数一致を一覧取得する
例:金額が 10,000 以上の行だけ抽出
=FILTER(A2:D100, D2:D100>=10000)
該当なしのときのメッセージを設定する
条件に合う行がないと #CALC! になるため、
第3引数でメッセージを指定します。
=FILTER(A2:D100, B2:B100=F2, "該当なし")
FILTER の応用:複数列の条件で抽出
例:担当者=F2 かつ 金額が 10,000 以上
=FILTER(A2:D100,
(B2:B100=F2) * (D2:D100>=10000))
FILTER の応用:特定列だけ抽出したい場合
FILTER は「元データ範囲」を自由に指定できるため、
抽出したい列だけを指定すれば OK です。
例:担当者=F2 のとき、商品名だけ一覧で抽出
=FILTER(C2:C100, B2:B100=F2)
よくあるつまずきと対策
条件範囲と元データ範囲の行数は必ず揃える
NG:
- 元データ:A2:D100
- 条件:B3:B100(開始行がズレている)
OK:
- 元データ:A2:D100
- 条件:B2:B100
スピル範囲にデータがあると #SPILL!
FILTER の結果は自動展開されるため、
右下方向に空きスペースが必要です。
空白セルも条件に含まれることがある
空白を除きたい場合は:
=FILTER(A2:D100, B2:B100<>"")
例題
問題1: A2:D100 に売上表があります。担当者が F2 の行だけを G2 に一覧表示する式を書いてください。
=FILTER(A2:D100, B2:B100=F2)
問題2: A2:D100 の中で、「担当者=F2 かつ 商品=G2」の行だけを H2 に一覧表示する式を書いてください。
=FILTER(A2:D100,
(B2:B100=F2) * (C2:C100=G2))
問題3: A2:D100 の中で、金額が 10,000 以上の行だけを I2 に一覧表示する式を書いてください。
=FILTER(A2:D100, D2:D100>=10000)
問題4: A2:D100 の中で、担当者が F2 または G2 の行だけを J2 に一覧表示する式を書いてください。
=FILTER(A2:D100,
(B2:B100=F2) + (B2:B100=G2))
問題5: A2:D100 の中で、担当者が F2 のとき、商品名(C列)だけを K2 に一覧表示する式を書いてください。
=FILTER(C2:C100, B2:B100=F2)
まとめ
FILTER は「複数一致の一覧取得」に最適な関数で、
VLOOKUP や XLOOKUP ではできない“複数行の抽出”が一発でできます。
覚えるべき型は次の3つです。
=FILTER(範囲, 条件)
=FILTER(範囲, 条件, "該当なし")
=FILTER(範囲, 条件1 * 条件2) ' AND 条件
=FILTER(範囲, 条件1 + 条件2) ' OR 条件
この型を使いこなせば、
売上表・顧客表・在庫表など、
どんな表でも「複数一致の一覧」を自在に作れるようになります。
