Excel関数 逆引き集 | 複数条件検索 → FILTER

Excel VBA Excel
スポンサーリンク

概要

「担当者=Aさん かつ 商品=X だけ」「店舗=東京 かつ 売上が1万円以上だけ」――
こういう“複数条件での抽出”は、FILTER関数が一番シンプルです。

FILTERは
「元データの範囲」と「条件(TRUE/FALSEの組み合わせ)」を渡すだけで、
条件に合う行だけを“丸ごと”抜き出してくれます。

複数条件は、掛け算(*)で AND 条件、足し算(+)で OR 条件と覚えるとスムーズです。


FILTER関数の基本

書式

=FILTER(元データ範囲, 条件, [該当なしのとき])
  • 元データ範囲:抽出したい表全体(ヘッダーを除いたデータ部分が基本)
  • 条件:行ごとに TRUE / FALSE になる式(複数でもOK)
  • 該当なしのとき:条件に合う行が1件もない場合に返す値(省略可)

例:
A2:D100 に売上データがあるとして、A列が日付、B列が担当者、C列が商品、D列が金額。
「担当者がF2 の行だけ抽出する」なら:

=FILTER(A2:D100, B2:B100=F2)

これが単一条件の基本形です。


複数条件(AND 条件)の書き方

「担当者=F2 かつ 商品=G2」の行だけ抽出

上記の売上表で、
担当者B列=F2、商品C列=G2 の行だけ欲しい場合:

=FILTER(A2:D100, (B2:B100=F2) * (C2:C100=G2))

ポイントをかみ砕くと:

  • (B2:B100=F2) … 行ごとに「担当者がF2ならTRUE、それ以外はFALSE」
  • (C2:C100=G2) … 行ごとに「商品がG2ならTRUE、それ以外はFALSE」
  • TRUEを1、FALSEを0とみなして、
    TRUE * TRUE だけが1(抽出対象)になり、それ以外は0(除外)

この「条件同士を * で掛け合わせる」= AND 条件、が複数条件検索の基本パターンです。

AND 条件+数値条件(売上金額も絞る)

「担当者=F2 かつ 商品=G2 かつ 売上が1万円以上」なら:

=FILTER(A2:D100,
        (B2:B100=F2) * (C2:C100=G2) * (D2:D100>=10000))

複数条件(OR 条件)の書き方

「担当者がF2 または G2」の行だけ抽出

担当者が「F2さん or G2さん」の行だけ欲しい場合:

=FILTER(A2:D100, (B2:B100=F2) + (B2:B100=G2))

ここでは、
TRUEを1、FALSEを0として、

  • TRUE + FALSE = 1(抽出)
  • FALSE + TRUE = 1(抽出)
  • TRUE + TRUE = 2(抽出)
  • FALSE + FALSE = 0(除外)

というイメージです。

AND と OR を組み合わせる

「担当者はF2 or G2 のどちらか」かつ「売上1万円以上」という条件なら、
OR 部分をカッコでくくってから AND 条件を掛けます。

=FILTER(A2:D100,
        ((B2:B100=F2) + (B2:B100=G2)) * (D2:D100>=10000))

「該当なし」のときにメッセージを出す

FILTER は条件に合う行が0件だと #CALC! エラーになります。
ユーザーにやさしくするには、第3引数にメッセージを指定します。

=FILTER(A2:D100,
        (B2:B100=F2) * (C2:C100=G2),
        "該当データなし")

これで、条件に一致する行がないときは「該当データなし」と表示されます。


よくあるつまずきと対策

条件の範囲サイズを必ずそろえる

FILTER の元データ範囲と、条件で使う列範囲は、行数が同じである必要があります

例:元データ A2:D100 なら、
条件は A2:A100, B2:B100, … のように「2行目〜100行目」で合わせること。

サイズがずれるとエラーになります。

AND は「*」、OR は「+」と覚える

  • AND(かつ) → *
  • OR(または) → +

というルールが FILTER では定番です。
条件の数が増えても、この組み合わせでどんどん書けます。

空白行を除外したいとき

日付や担当者が空の行は無視したい場合は、
「<>””」を条件に加えます。

=FILTER(A2:D100,
        (A2:A100<>"") * (B2:B100=F2) * (C2:C100=G2))

例題

問題1: A2:D100 に「日付, 担当者, 商品, 金額」の表があります。担当者が F2 の行だけを別シートに抽出する式を G2 に書いてください。

=FILTER(A2:D100, B2:B100=F2)

問題2: 同じ表で、「担当者=F2 かつ 商品=G2」の行だけを抽出する式を H2 に書いてください。

=FILTER(A2:D100, (B2:B100=F2) * (C2:C100=G2))

問題3: 「担当者=F2 かつ 商品=G2 かつ 金額が1万円以上」の行だけを抽出する式を I2 に書いてください。

=FILTER(A2:D100,
        (B2:B100=F2) * (C2:C100=G2) * (D2:D100>=10000))

問題4: 「担当者が F2 または G2」の行だけを抽出し、該当がなければ「該当データなし」と表示する式を J2 に書いてください。

=FILTER(A2:D100,
        (B2:B100=F2) + (B2:B100=G2),
        "該当データなし")

問題5: 「担当者が F2 または G2」かつ「金額が1万円以上」かつ「日付が空白でない」行だけを抽出する式を K2 に書いてください。

=FILTER(A2:D100,
        ((B2:B100=F2) + (B2:B100=G2)) *
        (D2:D100>=10000) *
        (A2:A100<>""),
        "該当データなし")

まとめ

複数条件検索を FILTER で書くときのコアは、次の3つです。

  • 基本形:=FILTER(範囲, 条件, "該当なし")
  • AND 条件は 条件1 * 条件2 * 条件3
  • OR 条件は 条件1 + 条件2

このパターンさえ身体に入れば、
「担当者 × 商品 × 金額 × 日付」など、現場でよくある“複数条件抽出”が
すべて同じ考え方で書けるようになります。

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