FILTER関数で3つ以上の複数条件を指定|AND・ORと全件抽出

3つの条件で まとめて抽出。無料Excelサンプル付き。

複数条件をすべて満たす行を取り出すには、FILTERの第2引数で条件式を「*」でつなぎます。3条件でも書き方は同じです。いずれかを満たすOR条件は「+」を使い、括弧で条件のまとまりを明確にします。

無料Excelサンプルで一緒に試す

伝票Noと種類で商品を抽出する2条件の例題です。A3を1000、B3をローズマリーにしてA6からの結果を確認します。数量を加える3条件は本文の追加例です。

無料サンプルファイルをダウンロード(.xlsx)

Microsoft 365向け。XLOOKUP・FILTER・UNIQUEの例はExcel 2024・2021でも利用できます。本文の対応版もご確認ください。

目次

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

サンプルの2条件を入力する

元データはA9:E12です。A列が伝票No、B列が商品ID、C列が単価、D列が種類、E列が数量。抽出先のA6に次の式を入れます。

A6に入力:伝票Noと種類の2つの条件で、行を取り出す
数式=FILTER(B9:E12,(A9:A12=A3)*(D9:D12=B3),"該当なし")
ひとことで伝票Noも種類も一致した行を、商品ID〜数量の4列まとめて取り出す
B9:E12
取り出す範囲です。商品ID・単価・種類・数量の4列です
A9:A12=A3
伝票NoがA3と同じ行が TRUE になります
D9:D12=B3
種類がB3と同じ行が TRUE になります
"該当なし"
該当する行が0件のときの表示です。省略すると #CALC! になります
データの流れ
① 1000 × ローズマリー に一致する行(11行目)
B11A003C112500D11ローズマリーE1110
▼
② A6から右へ、4列まとめて表示される結果
A6A003B62500C6ローズマリーD610
ポイントA3が1000、B3がローズマリーなら、A003・2500・ローズマリー・10が横に表示されます。サンプルに入っている式では第3引数を省略しているシートもあるため、該当なしの練習では上の式に置き換えてください。

3条件目に「数量10以上」を追加する

A6に入力:3つめの条件「数量10以上」を足す
数式=FILTER(B9:E12,(A9:A12=A3)*(D9:D12=B3)*(E9:E12>=10),"該当なし")
ひとことで条件を「*」で1つ足すだけで、3つ以上の条件に増やせる
E9:E12>=10
追加した3つめの条件です。数量が10以上の行が TRUE になります
A9:A12=A3
伝票Noの条件です。2条件のときと同じです
D9:D12=B3
種類の条件です。2条件のときと同じです
補足3つとも TRUE の行だけが残ります。条件がもっと増えても、* で足していくだけです。
ポイント3条件のいずれもTRUEの行だけが残ります。しきい値を変更しやすくするなら、空いているG3に10を入力し、>=10を>=$G$3にします。数量が文字列として保存されていると意図した比較にならないため、数値にそろえます。

ANDとORを組み合わせる

伝票NoがA3と一致し、種類は「ローズマリー」または「カモミール」という条件です。

G6に入力:ANDとORを組み合わせる
数式=FILTER(B9:E12,(A9:A12=A3)*((D9:D12="ローズマリー")+(D9:D12="カモミール")),"該当なし")
ひとことで「伝票Noが一致」かつ「種類がローズマリーまたはカモミール」の行を取り出す
A9:A12=A3
伝票Noの条件(AND)です
(D9:D12="ローズマリー")+(D9:D12="カモミール")
足し算(+)でOR条件を作ります。どちらかに当てはまれば 1 以上です。外側のかっこでまとめるのがポイントです
データの流れ
① 伝票Noが1000で、ローズマリーまたはカモミールの行
11行目A00312行目A004
▼
② 2行が取り出される結果
G6A003G7A004
注意OR部分を外側の括弧でまとめます。この例ではA003とA004の2行が抽出されます。AND関数で範囲全体をまとめて判定すると1個のTRUE/FALSEになるため、行ごとの抽出条件には比較式の掛け算を使います。

結果が増える分の空間を確保する

注意FILTERは結果を自動的に周囲のセルへ広げます。これがスピルです。A6に数式を入れたら、右側と下側に既存データや結合セルがないか確認します。元データが9行目からある例題では、条件を広げて結果を増やすと元表にぶつかることがあります。実務では別シートなど十分な空き領域へ出力してください。

Excel 2019・2016では補助列方式を使う

FILTERはMicrosoft 365・Excel 2024・2021で利用できます。旧Excelでは、F9に条件を満たす行の番号を作り、INDEX+SMALLで順に取り出します。

F9に入力(F12までコピー):条件を満たす行に番号を付ける(旧Excel)
数式=IF((A9=$A$3)*(D9=$B$3),ROW()-ROW($A$9)+1,"")
ひとことでFILTERが使えないExcelで、条件を満たす行だけ「何番目の行か」の番号を付ける
A9=$A$3
伝票NoがA3と同じか。$ を付けて、検索条件のセルを固定します
D9=$B$3
種類がB3と同じか
""
条件を満たさない行は、空白にします
補足この番号を小さい順に読み出して、INDEX関数で行を取り出します。
ポイントF12までコピーし、抽出先で小さい番号から読み出します。詳しいコピー手順はINDEX+SMALLで複数件を順に抽出で説明しています。

該当なしと数式エラーを区別する

  • 第3引数の「該当なし」は抽出対象が0件のときの表示。
  • 条件範囲と元データの行数不一致は範囲を修正する。
  • 条件に使うセルにエラーがある場合は元データを確認する。
ポイント同じ列に多数の候補を指定するときは、ORを何個も増やすより条件リストとMATCHを使う方法が管理しやすくなります。

FILTERがうまく動かないときの確認表(#SPILL!・#CALC!・該当なし)

練習ツールの「after」タブで、結果が増える例(#SPILL!)や、0件の例を試せます。

症状よくある原因対処
#SPILL! が表示される結果が広がる先(右や下)に、データや結合セルがある十分な空き領域にFILTERを置くか、邪魔なデータを移動します。練習ツールの「1000×ローズマリーの行を3行に増やす」で確認できます
#CALC! が表示される該当する行が0件で、第3引数を省略している第3引数に「該当なし」などを指定します
「該当なし」になる条件に合う行が本当に0件、または条件のセルの値が元データとずれている(全角半角・スペース・数値と文字列)A3とB3の値を元データと見比べます。伝票Noの数値と文字列の違いに注意します
意図しない行が残る・外れる数量が文字列として保存されていて、数値との比較がずれる数量を数値にそろえます

無料Excelサンプルで復習する

伝票Noと種類で商品を抽出する2条件の例題です。A3を1000、B3をローズマリーにしてA6からの結果を確認します。数量を加える3条件は本文の追加例です。

無料サンプルファイルをダウンロード(.xlsx)

Microsoft 365向け。XLOOKUP・FILTER・UNIQUEの例はExcel 2024・2021でも利用できます。本文の対応版もご確認ください。

次に読むと理解が深まる記事

参考:Microsoft公式ドキュメント FILTER

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次