FILTER関数でAND条件(AかつB)を指定する方法は?
結論
FILTER関数のAND条件は、条件式を括弧で囲んで * 演算子で結合することで実現できます。
詳しい解説
FILTER関数でAND条件を指定するには、条件式を `*` 演算子で結合します。例えば `=FILTER(A2:D100, (B2:B100="東京")*(C2:C100>=100))` とすると、東京かつ売上が100以上のデータのみが抽出されます。各条件はTRUE(1)またはFALSE(0)として評価され、`*` で乗算されるため、両方がTRUEのときのみ1になり抽出されます。複数のAND条件を追加する場合は、さらに `*(D2:D100="完了")` のように続けることができます。
旧バージョンでの代替方法
詳細フィルター(高度なフィルター)Excel 2016以降
データタブ→「詳細設定」で条件範囲を別セルに記述するAND/OR条件抽出。FILTER関数と異なり静的な結果を別の場所に貼り付け可能。全バージョン対応。
ヘルパー列とオートフィルターExcel 2016以降
作業列に条件式(=AND(B2="東京", D2>=500000))を入力し、TRUEだけをオートフィルターで絞り込む方法。FILTER関数が使えない2016/2019でも実現可能。
よくあるエラーと対処法
#CALC!原因: FILTER関数の条件に一致するデータが1件もない場合に発生する。
対処: FILTER関数の第3引数(一致なし時の値)を指定する。例:=FILTER(A2:D100, 条件, "該当なし")。
#SPILL!原因: FILTER関数の結果が展開されるスピル範囲に既存のデータがある。
対処: FILTER関数を入力するセルの下・右方向の範囲を空にする。
#NAME?(2016/2019で開いた場合)原因: FILTER関数はExcel 2021/2024/365専用のため、2016/2019で開くと#NAME?エラーになる。数式バーに`_xlfn.FILTER`と表示される。
対処: 詳細フィルターまたはSUMPRODUCT+IF等の旧関数で代替する。共有相手のバージョンを事前に確認すること。
バージョン対応
| Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| FILTER関数は未対応 | FILTER関数は未対応 | 対応 | 対応 | 対応 |
実務での使用例
東京で高額売上のデータ抽出
東京支店で売上が50万円以上のデータのみ抽出
=FILTER(A2:D100, (B2:B100="東京")*(D2:D100>=500000))完了済み高優先度タスク
ステータスが「完了」かつ優先度が「高」のタスクを抽出
=FILTER(A2:E200, (C2:C200="完了")*(D2:D200="高")*(E2:E200>=TODAY()-30))- C列がステータス、D列が優先度、E列が完了日の場合
- 3つの条件を * で結合
- 過去30日以内に完了した高優先度タスクが抽出される