cellio

ExcelのFILTER関数:条件に一致する行を抽出する使い方

ExcelやGoogleスプレッドシートのFILTER関数の使い方を徹底解説。単一条件やAND・ORの複数条件、該当なし時のエラー対策まで実用例付きで紹介します。

著者 Ayoub Farid · · 4 分で読めます

FILTER関数は、指定した条件に一致するすべての行を抽出し、元のデータが変更されると自動で更新される動的な表として展開するExcel関数です。通常のフィルター機能と似ていますが、数式として好きなセル位置に結果を表示できるのが大きなメリットです。

Microsoft 365、Excel 2021以降、Web版Excel、およびGoogleスプレッドシートで利用可能です。

構文

=FILTER(array, include, [if_empty])

単一条件で抽出する

セル範囲 A2:D200 のうち、C列のカテゴリーが「Coffee」であるすべての行を抽出する場合:

=FILTER(A2:D200,C2:C200="Coffee")

抽出条件をセルで指定し、該当データがない場合のメッセージを設定する場合:

=FILTER(A2:D200,C2:C200=G1,"No matches")

AND条件:条件同士を掛け合わせる(*)

カテゴリーが「Coffee」かつ 売上が100を超える行を抽出する場合:

=FILTER(A2:D200,(C2:C200="Coffee")*(D2:D200>100))

OR条件:条件同士を足し合わせる(+)

カテゴリーが「Coffee」または「Tea」の行を抽出する場合:

=FILTER(A2:D200,(C2:C200="Coffee")+(C2:C200="Tea"))

それぞれの条件判定は、TRUE(1)または FALSE(0)を返します。掛け算(*)をすると「両方が1(TRUE)」の場合のみ抽出され、足し算(+)をすると「どちらか一方が1(TRUE)」であれば抽出されます。

特定の文字列を含むデータを抽出する

=FILTER(A2:D200,ISNUMBER(SEARCH("latte",A2:A200)))

抽出結果を並べ替える

=SORT(FILTER(A2:D200,C2:C200="Coffee"),4,-1)

4列目を基準にして、降順(大きい順)で並べ替えます。詳しくは SORT関数の使い方 をご覧ください。

特定の列だけを抽出する

=FILTER(A2:A200,C2:C200="Coffee")

名前が入力されているA列のみを抽出して返します。

使用時の注意点

  • #SPILL! エラー:スピル先のセル範囲にすでにデータや空白文字が入力されていて、展開が妨げられています。
  • #CALC! エラー:一致するデータが見つからず、第3引数の [if_empty] を設定していない場合に発生します。
  • include(条件範囲)の行数は、array(データ範囲)の行数と完全に一致している必要があります。

よくある質問

Excelで数式を使ってフィルターをかけるにはどうすればよいですか?

=FILTER(データ範囲,抽出条件) のように入力します。例えば =FILTER(A2:D200,C2:C200="Coffee") と指定します。

複数の条件で抽出するにはどうすればよいですか?

各条件を括弧 () で囲み、AND条件ならアスタリスク(*)、OR条件ならプラス記号(+)でつなぎます。

FILTER関数で「#CALC!」エラーが出る理由は何ですか?

条件に一致するデータが1件も見つからない場合に表示されます。解決するには、第3引数に "該当なし" などのテキストを指定してください。

Excel 2019でFILTER関数は使えますか?

いいえ、使用できません。Microsoft 365 または Excel 2021以降のバージョンが必要です。

あわせて読みたい