FILTER関数で売上3,000以上の行を抽出する例
Rate this post

FILTER関数とは

FILTER関数は、指定した条件に一致するデータを表から自動で抽出する関数です。Microsoft 365のExcelで利用でき、オートフィルタと違い、元の表を触らずに別の場所へ「絞り込み結果」を作成できます。

最大の特長は、元データに行を追加・変更すると抽出結果が自動で更新されること。月次レポートやダッシュボードの部品として、一度作れば何度も使い回せるのが強みです。

FILTER関数で売上3,000以上の行を抽出する例
C列が3,000以上の行だけ抽出される

基本的な使い方

書式は =FILTER(配列, 含む条件, [空の場合]) です。第3引数は省略できます。

引数の意味

  • 配列:抽出対象となる表の範囲(見出しを除く)
  • 含む条件:どの行を残すかをTRUE/FALSEで返す式(例:C2:C6>=3000)
  • 空の場合:条件に一致する行が0件のときに表示する文字列

入力手順

  1. 結果を出力したい先頭セルを選択する
  2. =FILTER( と入力し、表全体の範囲を指定する
  3. カンマの後に条件式(例:C2:C6>=3000)を入力する
  4. Enterを押すと、条件に合う行がスピル展開される

条件式は「範囲と値の比較」として書き、比較結果がTRUEになった行だけが残ります。数値の大小、文字列の完全一致、日付の範囲など、比較演算子(=, <>, >, <, >=, <=)はすべて使えます。

FILTER関数で東京支店かつ売上3,000以上を抽出する複数条件の例
AND条件は「*」でつなぐ

複数条件で絞り込む

条件を複数指定するときは、AND条件なら「*」、OR条件なら「+」でつなぎます。

AND条件(両方を満たす)

=FILTER(A2:C6, (B2:B6="東京")*(C2:C6>=3000), "該当なし")

OR条件(どちらかを満たす)

=FILTER(A2:C6, (B2:B6="東京")+(B2:B6="大阪"), "該当なし")

条件を3つ以上つなぐ場合も同じ記法です。カッコで囲んで「*」または「+」でつないでください。第3引数には、条件に一致する行が無いときに表示する文字列を指定できます。指定しないと#CALC!エラーになります。

実務で役立つ活用テクニック

部分一致で抽出する

検索語が含まれる行だけを抽出するには、ISNUMBER関数とSEARCH関数を組み合わせます。

=FILTER(A2:C100, ISNUMBER(SEARCH("会議", A2:A100)), "該当なし")

期間(日付の範囲)で絞り込む

日付列に対して「以上」「以下」をANDで組み合わせれば、指定月だけのデータを抽出できます。

=FILTER(A2:D100, (B2:B100>=DATE(2025,4,1))*(B2:B100<DATE(2025,5,1)))

SORT関数と組み合わせてランキングを作る

FILTERの外側をSORTで包むと、「抽出して上位順に並べる」処理が1つの式で完成します。営業成績のトップ10リストなどに便利です。

=SORT(FILTER(A2:C100, C2:C100>=3000), 3, -1)

プルダウン(データの入力規則)と連動させる

抽出条件をセル参照にすれば、プルダウンで支店名を選ぶだけで結果が切り替わる仕組みが作れます。条件式を B2:B100=G1 のようにして、G1に入力規則のリストを設定するだけです。

FILTER関数が使えない場合

FILTER関数はMicrosoft 365・Excel for web・Excel 2021以降専用です。Excel 2019以前の環境でファイルを開くと、式の先頭に@が付き、正常に動作しません。共有ファイルで使うときは、閲覧者のExcelのバージョンを確認してください。旧環境向けには、オートフィルタやCOUNTIF関数、ピボットテーブルでの代替が必要です。

よくあるエラーと対処法

#CALC!エラーが出る

条件に一致する行が0件のときに表示されます。第3引数に「"該当なし"」などを指定すれば、エラーではなく任意の文字を表示できます。

#SPILL!エラーが出る

スピル範囲に何かが入力されていて、結果を展開できない状態です。出力先のセルを空けると解消します。詳しくはスピルエラーの原因と対処法の解説をご覧ください。

#VALUE!エラーが出る

配列と条件の行数が一致していないときに表示されます。例えば配列にA2:C100を指定したら、条件も必ず2行目から100行目の範囲で指定してください。

よくある質問

Q. 条件に一致する件数だけを数えたい場合は?

A. =COUNTIF(C2:C100,">=3000") のように、COUNTIF関数・COUNTIFS関数で直接数えられます。抽出と件数の両方が要る場合は両方使います。

Q. 抽出と並べ替えを同時にできますか?

A. できます。=SORT(FILTER(…), 列, -1) のように、FILTERの外側をSORTで包んでください。

Q. 元の表の並び順は変わってしまいますか?

A. 変わりません。FILTERは参照元を一切変更しないため、元データは安全です。抽出結果を消したければ、数式セルを1つ削除するだけです。

まとめ

FILTER関数は「表から条件に合う行だけを関数で取り出す」画期的な機能です。抽出結果が自動更新されるため、日々変わるデータのレポートに最適。SORT関数やUNIQUE関数と組み合わせれば、フィルタ・並べ替え・重複削除を組み合わせた集計表も1つの式で作れます。まずは小さい表で動きを確認し、実務のレポートに順番に導入してみてください。

関連記事