Excel

【Excel】エクセルで複数条件に一致するデータを抽出する方法(FILTER関数)

FILTER関数で複数条件のデータを抽出する方法 - 抽出条件をセル参照にする設定
当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

Excelで売上表や顧客リストを扱っていると、担当者、商品、金額、日付など、複数の条件を同時に満たす行だけを一覧にしたい場面があります。

従来はオートフィルターや詳細設定フィルター、関数の組み合わせで対応することが多かった作業ですが、Microsoft 365などで使えるFILTER関数なら、元データを残したまま抽出結果を別の場所へ自動表示できます。

FILTER関数は、条件に一致した複数行をまとめて返せる動的配列関数です。

複数条件では、すべて満たす場合に掛け算、いずれかを満たす場合に足し算を使う点が重要です。

この記事では、1行目に見出しがある売上データを例に、エクセルで複数条件に一致するデータを抽出する方法を、数式の意味から実務的な応用まで解説します。

条件をセルに入力して抽出できる形にしておけば、毎回フィルターをかけ直す手間も減らせるでしょう。

 

FILTER関数で複数条件のデータを抽出する方法

日付 担当者 商品 売上
2026/9/1 田中 ノートPC 120000
2026/9/2 佐藤 モニター 45000
2026/9/3 田中 モニター 68000

それではまず、担当者が田中で、かつ売上が50000円以上のデータを取り出す基本操作について解説していきます。

 

抽出先セルへの数式入力

元の表がA1からD10にあり、1行目が見出しの場合、抽出結果を表示したい空白セルにFILTER関数を入力します。

=FILTER(A2:D10,(B2:B10=”田中”)*(D2:D10>=50000),”該当データなし”)

この数式では、A2:D10が返したい範囲です。

見出し行を含めず、実際のデータが入っている2行目以降を指定するのが基本になります。

第2引数には判定条件を指定します。

(B2:B10=”田中”)は担当者列が田中である行を調べ、該当する行をTRUE、該当しない行をFALSEとして扱います。

同様に、(D2:D10>=50000)は売上列が50000以上かどうかを判定する部分です。

二つの条件の間にある掛け算記号は、両方の条件を満たす行だけを残すための指定です。

TRUEは計算時に1、FALSEは0として扱われるため、1×1になった行だけが抽出対象になります。

第3引数の「該当データなし」は、条件に合う行が一つもないときに表示する文字です。

空欄にしたい場合は、最後の引数を””に変更してもかまいません。

 

スピルによる抽出結果の展開

FILTER関数を入力してEnterキーを押すと、条件に一致する複数行が下方向と右方向へ自動で広がります。

この自動展開はスピルと呼ばれるExcelの機能です。

数式を入力するのは左上の1セルだけで、結果の行数に合わせてコピーする必要はありません。

抽出先の周囲に文字、数値、別の数式が入っていると、結果を展開できずスピルエラーになることがあります。

その場合は、数式を入力したセルの右側と下側を確認し、障害になっている値を移動するか削除しましょう。

抽出元に新しい行を追加したときは、通常のセル範囲ではなくテーブルとして管理すると便利です。

テーブル化した表は行の追加に応じて参照範囲が広がるため、FILTER関数の対象範囲を手動で修正する回数を減らせます。

抽出結果が途中で止まる場合は、数式ではなくスピル先のセルに値が残っていないかを確認します。

抽出元と抽出先を同じ表の中に置くと、データ追加時に干渉しやすいため、別シートに出力する運用も有効です。

 

抽出条件をセル参照にする設定

数式内に「田中」や50000を直接書く方法は理解しやすい一方で、条件を変えるたびに数式を編集する必要があります。

たとえばF2に担当者名、G2に最低売上を入力し、抽出式ではそのセルを参照する方法がおすすめです。

=FILTER(A2:D10,(B2:B10=F2)*(D2:D10>=G2),”該当データなし”)

これならF2を佐藤へ、G2を30000へ変更するだけで、一覧がすぐ更新されます。

検索条件を数式から分離すると、関数に慣れていない人でも抽出条件を変更しやすくなります。

日付、部署、商品名なども同じ考え方でセル参照に置き換えられます。

文字列条件では、セルに余分な空白が入っていると一致しないことがあります。

見た目では気付きにくい半角スペースや全角スペースにも注意が必要です。

FILTER関数で複数条件のデータを抽出する方法 - 抽出条件をセル参照にする設定

【操作のポイント】抽出結果の左上セルだけにFILTER関数を入力し、周囲のスピル範囲は空けておきます。

 

複数条件の指定方法とAND・OR条件

担当者 商品 売上 抽出条件
田中 モニター 68000 田中かつ50000以上
佐藤 モニター 45000 田中または佐藤

続いては、複数条件を組み合わせるときの掛け算と足し算の違いを確認していきます。

 

すべての条件を満たすAND条件

AND条件とは、指定した条件をすべて満たすデータだけを抽出する方法です。

FILTER関数では、各条件式を丸括弧で囲み、その間を掛け算記号でつなぎます。

=FILTER(A2:D10,(B2:B10=F2)*(C2:C10=G2)*(D2:D10>=H2),”該当データなし”)

この式では、担当者がF2と一致し、商品がG2と一致し、売上がH2以上という三つの条件を同時に満たす行だけを返します。

条件を追加したい場合は、条件式を増やして掛け算でつなぐだけです。

数式の途中に空白を入れて見やすくしても、Excelの計算結果は変わりません。

ただし、範囲の開始行と終了行はすべてそろえる必要があります。

B2:B10とD2:D9のように行数が異なる範囲を使うと、計算エラーになるためです。

元データの行数が多いときほど、テーブルの構造化参照を使う方法が安定します。

 

いずれかに一致するOR条件

OR条件とは、複数の条件のうち一つでも満たせば抽出する方法です。

FILTER関数では、条件式の間を足し算記号でつなぎます。

=FILTER(A2:D10,(B2:B10=”田中”)+(B2:B10=”佐藤”),”該当データなし”)

この式なら、担当者が田中または佐藤の行をすべて表示できます。

足し算では、田中に該当する行は1、佐藤に該当する行も1となり、どちらかに該当すれば0以外になるため、FILTER関数が抽出対象として認識します。

掛け算はかつ、足し算はまたは、と覚えると複数条件の数式を組み立てやすくなります。

担当者と売上のような異なる列をOR条件にすることも可能です。

たとえば、担当者が田中、または売上が100000以上という条件も作成できます。

ただし条件が複雑になるほど、丸括弧の位置が重要になります。

 

Excel画面での数式入力手順

数式を入力する前に、抽出先のセルが元データや他の数式と重ならないことを確認しましょう。

ここではF5を抽出結果の左上セルとし、F2に担当者、G2に最低売上を入力した例です。

売上一覧.xlsx – Excel ● □ ×
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示 B罫線中央揃え
fx=FILTER(A2:D10,(B2:B10=F2)*(D2:D10>=G2),”該当データなし”)
A B C D E F G
1 日付 担当者 商品 売上 抽出結果
2 9/1 田中 PC 120000 田中 50000
3 9/3 田中 モニター 68000
5 田中 モニター
F5へ数式を入力 ➤

F5を選択して数式バーへ式を入力し、Enterキーで確定します。

赤枠のように、条件入力セルと抽出開始セルを分けておくと、表の用途がひと目で分かります。

【操作のポイント】AND条件は掛け算、OR条件は足し算で結合し、各条件式を必ず丸括弧で囲みます。

 

日付・数値・文字列を使った抽出条件

日付 商品 売上
2026/9/1 ノートPC 120000
2026/9/15 モニター 68000

続いては、実務でよく使う日付、金額、文字列の条件指定を確認していきます。

 

期間を指定する日付条件

月ごとや指定期間の売上を抽出したい場合は、開始日以上と終了日以下の二つの条件を掛け算でつなぎます。

=FILTER(A2:D10,(A2:A10>=F2)*(A2:A10<=G2),”該当データなし”)

F2に開始日、G2に終了日を入力すると、その期間内にあるデータだけを抽出できます。

日付は文字列ではなく、Excelが日付として認識している値で入力することが大切です。

セルの表示が2026/9/1であっても、内部的に日付のシリアル値として保存されていれば比較できます。

日付が左寄せになっていたり、計算結果がおかしかったりする場合は、文字列として入力されている可能性があります。

データタブの区切り位置機能やDATEVALUE関数で日付へ変換してから抽出するとよいでしょう。

 

以上・以下・範囲を指定する数値条件

売上、在庫数、点数、数量などの数値は、比較演算子を利用して条件を作れます。

50000以上なら>=、50000以下なら<=、50000より大きいなら>を使います。

=FILTER(A2:D10,D2:D10>=50000,”該当データなし”)

=FILTER(A2:D10,(D2:D10>=50000)*(D2:D10<=100000),”該当データなし”)

後者は50000以上100000以下の範囲を抽出する数式です。

条件セルを使う場合は、数値セルに円や個などの単位を直接入力しないようにします。

50000円と入力すると文字列になることがあり、数値比較が期待どおりに動かない場合があります。

単位はセルの表示形式で付け、入力値は数値だけにする運用が安全です。

 

部分一致と空白を除く文字列条件

商品名に「PC」を含む行のように、文字列の一部で検索したい場合はSEARCH関数とISNUMBER関数を組み合わせます。

=FILTER(A2:D10,ISNUMBER(SEARCH(F2,C2:C10)),”該当データなし”)

F2へPCと入力すると、ノートPCやデスクトップPCなど、商品列にPCを含むデータを抽出できます。

SEARCH関数は検索文字列が見つかった位置を数値で返し、見つからない場合はエラーになります。

ISNUMBER関数で数値かどうかを判定することで、見つかった行をTRUEとしてFILTER関数へ渡せます。

空白セルを除外したいだけなら、条件には(C2:C10<>””)を指定します。

完全一致は=、部分一致はSEARCH、空白以外は<>””という使い分けです。

【操作のポイント】日付と数値の条件セルには、文字ではなく比較できる値を入力し、表示形式で見た目を整えます。

 

複数の抽出結果を見やすくする並べ替えと列指定

日付 担当者 売上
2026/9/3 田中 68000
2026/9/1 田中 120000

続いては、抽出した一覧を用途に合わせて見やすく整える方法を確認していきます。

 

SORT関数を組み合わせた並べ替え

FILTER関数の結果は元データと同じ順番で表示されます。

売上の高い順や日付の新しい順にしたい場合は、SORT関数でFILTER関数を囲みます。

=SORT(FILTER(A2:D10,(B2:B10=F2),”該当データなし”),4,-1)

この数式の4は、抽出範囲A2:D10の中で4番目にある売上列を意味します。

-1は降順、1は昇順の指定です。

売上の高い順に並べる場合は、列番号に4、並べ替え順に-1を指定します。

日付列で昇順にしたいときは、列番号を1、並べ替え順を1に変更します。

抽出結果から並べ替えるため、元の売上台帳の行順は変わりません。

 

必要な列だけを表示するCHOOSECOLS関数

抽出結果にすべての列を表示する必要がない場合もあります。

たとえば、担当者、商品、売上だけを一覧にしたいなら、FILTER関数の結果をCHOOSECOLS関数で加工できます。

=CHOOSECOLS(FILTER(A2:D10,B2:B10=F2,”該当データなし”),2,3,4)

2、3、4は、抽出された配列の2列目、3列目、4列目を返す指定です。

日付列が不要な報告用一覧を作る場合に役立ちます。

抽出元の表を編集せずに表示列だけを変えられるため、原本と提出用資料を分けて管理したいケースにも向いています。

FILTER関数はデータを抽出し、CHOOSECOLS関数は見せる列を選ぶ役割です。

 

テーブル参照による数式の管理

元データをテーブルとして設定している場合は、セル範囲の代わりにテーブル名と列見出しを使えます。

売上表のテーブル名を売上データとした場合の例を確認しましょう。

=FILTER(売上データ,(売上データ[担当者]=F2)*(売上データ[売上]>=G2),”該当データなし”)

この書き方は数式が少し長く見えますが、どの列を条件にしているかを判別しやすい利点があります。

テーブルに新しい売上行を追加すると、参照範囲も自動で広がります。

大量のデータを毎月追加する管理表では、固定範囲のA2:D1000よりも保守しやすい方法です。

【操作のポイント】並べ替えや列の絞り込みは、FILTER関数の外側にSORT関数やCHOOSECOLS関数を重ねて指定します。

 

FILTER関数で発生しやすいエラーと対処法

表示内容 主な原因 確認箇所
スピル 展開先に値がある 抽出セルの周囲
計算エラー 条件範囲の行数違い 参照範囲

続いては、数式がうまく動かないときに確認したい代表的なポイントを解説していきます。

 

該当データなしと空白の扱い

条件に合うデータがない場合、FILTER関数は第3引数を省略すると計算エラーを表示します。

利用者にとって分かりやすい表にするため、あらかじめ第3引数へメッセージを入れておきましょう。

「該当データなし」を指定すれば、条件に一致する行がゼロでも数式エラーを見せずに済みます。

ただし、その抽出結果をさらに集計する場合、文字列が混ざると合計や件数の計算へ影響することがあります。

後続の数式で数値だけを扱いたい場合は、空文字を返す設定も検討します。

=FILTER(A2:D10,B2:B10=F2,””)

目的が画面表示なのか、後続計算の材料なのかで、空欄とメッセージを使い分けることが大切です。

 

スピルエラーと結合セルの確認

FILTER関数は複数セルへ結果を展開するため、抽出先に結合セルがあると正常に動作しません。

結果が表示される予定の範囲に、値、数式、スペース、結合セルがないかを確認してください。

数式セルを選ぶと、Excelは展開予定の範囲を点線などで示します。

邪魔になっているセルを選択して移動またはクリアすれば、スピルエラーは解消できる場合があります。

抽出結果の領域は、結合しない通常のセルだけで作るのが基本です。

見出しを中央に配置したいときも、セルを結合する代わりに選択範囲内で中央の配置を使うと、後から表を拡張しやすくなります。

 

参照範囲とデータ形式の見直し

FILTER関数の第1引数と第2引数は、対象となる行数が一致していなければなりません。

抽出範囲をA2:D100、条件範囲をB2:B99としてしまうと、行数が一つ異なるためエラーになります。

また、売上に見える値が文字列で保存されていると、以上や以下の比較が期待どおりにならないことがあります。

セルの左上に緑色の三角が表示される場合や、数値が左寄せの場合は確認が必要です。

VALUE関数による変換、エラーチェック、区切り位置機能などでデータ形式を整えましょう。

【操作のポイント】エラー時は、抽出先の空き、参照範囲の行数、日付と数値のデータ形式をこの順に確認します。

 

まとめ エクセルで複数条件に一致するデータを抽出する方法

Excelで複数条件に一致するデータを抽出するには、FILTER関数の第2引数へ条件式を指定します。

すべての条件を満たす抽出では掛け算を使い、いずれかの条件でよい抽出では足し算を使う点が基本です。

担当者、商品、日付、売上金額などをセル参照にしておくと、数式を編集せずに条件を切り替えられます。

FILTER関数は、元データを並べ替えたり削除したりせず、必要な行だけを別の場所に表示できる点が大きなメリットです。

SORT関数を重ねれば売上順や日付順に整えられ、CHOOSECOLS関数を組み合わせれば必要な列だけを見せられます。

抽出結果が表示されないときは、スピル先のセル、結合セル、参照範囲の行数、データ形式を順に見直しましょう。

まずは小さな売上表で担当者と金額の二条件から試し、慣れたら期間指定や部分一致検索へ広げていくと、日々の集計作業を効率化できます。