Excel関数 逆引き集 | 複数一致の一覧取得 → FILTER

Excel VBA Excel
スポンサーリンク

概要

「条件に一致する行が複数あるから、全部まとめて取り出したい」
「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 条件

この型を使いこなせば、
売上表・顧客表・在庫表など、
どんな表でも「複数一致の一覧」を自在に作れるようになります。

タイトルとURLをコピーしました