スプレッドシートのFILTER関数の使い方|条件抽出を自動化する方法

「売上データから東京支店だけ抜き出したい」「今月の受注だけ一覧にしたい」。こんな場面、仕事でよく出てきますよね。

フィルター機能で手動で絞り込む方法もありますが、条件が変わるたびにポチポチ操作するのは面倒です。

しかも、元データに手を加えたくない場面も多いはず。

そんなときに使えるのが FILTER関数 です。条件に一致する行だけを自動で別の場所に取り出してくれます。

この記事では、基本の書き方から複数条件の指定・SORT関数との組み合わせまで紹介します。

スポンサーリンク

FILTER関数とは?

FILTER関数(フィルター関数)は、指定した条件に一致する行を自動で抽出するGoogleスプレッドシートの関数です。

英語の「filter(ろ過する・選別する)」が名前の由来で、データの中から必要なものだけを取り出すイメージです。

たとえば、社員リストから「営業部の人だけ」を抜き出したり、売上表から「100万円以上の案件だけ」を取り出したりできます。

フィルター機能と違って元データはそのままです。別のセルに結果が出力されるので、レポート作成にとても便利です。

NOTE

FILTER関数はGoogleスプレッドシート固有の機能として古くから使えます。Excelでも Microsoft 365 / Excel 2021 以降で対応していますが、引数の仕様が一部異なります(後述)。

スポンサーリンク

FILTER関数の書き方(構文と引数)

基本構文

=FILTER(範囲, 条件1, [条件2, ...])

引数の説明

引数必須/任意説明
範囲必須抽出したいデータの範囲(例: A2:D100
条件1必須TRUE / FALSE を返す条件式(例: B2:B100="東京"
条件2, …任意追加の条件。すべてAND条件として適用される

ポイントは 条件式が TRUE / FALSE の配列を返す という点です。

たとえば B2:B100="東京" と書くと、B列の各セルが「東京」かどうかを判定します。TRUE / FALSE の一覧が作られます。FILTER関数は TRUE の行だけを取り出す仕組みです。

スポンサーリンク

FILTER関数の基本的な使い方

ここでは、次のような売上データを使って説明します。

A列(担当者)B列(支店)C列(商品)D列(金額)
2行目田中東京ノートPC150000
3行目佐藤大阪モニター45000
4行目鈴木東京キーボード8000
5行目高橋名古屋ノートPC140000
6行目田中東京マウス3000

やりたいこと: B列が「東京」の行だけを抽出する。

空いているセル(たとえば F2)に次の数式を入力します。

=FILTER(A2:D6, B2:B6="東京")

結果はこうなります。

F列G列H列I列
田中東京ノートPC150000
鈴木東京キーボード8000
田中東京マウス3000

B列が「東京」の行だけが自動で出力されました。元のデータはまったく変わりません。

条件に合う行がまるごとコピーされるのがFILTER関数の特徴です。

TIP

FILTER関数の結果は複数行に自動で展開されます(スピル)。出力先のセルに他のデータがあると #REF! エラーになるので、下方向に十分な空きスペースを確保しておいてください。

スポンサーリンク

FILTER関数の実践的な使い方・応用例

複数条件で絞り込む(AND条件・OR条件)

FILTER関数では、複数の条件を組み合わせて絞り込めます。

AND条件(すべて満たす) は、条件を引数としてカンマで区切るか、*(掛け算)演算子を使います。

=FILTER(A2:D6, B2:B6="東京", D2:D6>=10000)

この数式は「支店が東京」かつ「金額が10,000円以上」の行を返します。

OR条件(いずれかを満たす)+(足し算)演算子で条件をつなぎます。

=FILTER(A2:D6, (B2:B6="東京")+(B2:B6="大阪"))

この数式は「支店が東京」または「支店が大阪」の行を返します。

NOTE

+ が使える理由は、条件式が TRUE=1 / FALSE=0 の数値配列を返すためです。掛け算()は「両方1のときだけ1」=AND、足し算(+)は「どちらかが1以上なら1以上」=OR の動きになります。

部署別データ抽出

プルダウンと組み合わせると、選択した部署のデータを動的に抽出できます。

たとえば、F1セルにプルダウンで支店名を選べるようにしておき、F2セルに次の数式を入力します。

=FILTER(A2:D6, B2:B6=F1)

F1で「大阪」を選べば大阪のデータだけが表示されます。条件セルを切り替えるだけで結果が自動で変わります。

プルダウンの作り方は スプレッドシートのプルダウン作り方|色付け・連動まで解説 を参考にしてください。

期間で絞り込む

日付列がある場合、特定の期間だけを抽出できます。

たとえば「2026年3月のデータだけ」を取り出したい場合は次のように書きます。

=FILTER(A2:E100, E2:E100>=DATE(2026,3,1), E2:E100<=DATE(2026,3,31))

DATE関数で開始日と終了日を指定し、2つの条件をカンマで区切ります。AND条件で「3月1日以降 かつ 3月31日以前」になります。

つまり、3月中のデータだけが抽出されます。

FILTER+SORTで抽出結果を並べ替え

FILTER関数で抽出した結果を金額順に並べ替えたいときは、SORT関数で囲みます。

=SORT(FILTER(A2:D6, B2:B6="東京"), 4, FALSE)

SORT関数の第2引数 4 は「4列目(金額)で並べ替え」、第3引数 FALSE は「降順」を意味します。

これで東京支店のデータを金額が大きい順に表示できます。抽出と並べ替えを1つの数式で完結できるのはとても便利です。

TIP

SORT関数の列番号はFILTER結果の中での列番号です。元データのシート上の列番号ではないので注意してください。

スポンサーリンク

よくあるエラーと対処法

エラー / 症状原因対処法
#N/A条件に一致するデータがない=IFERROR(FILTER(...), "該当データなし") で空結果時のメッセージを設定
#REF!出力先のセルにデータがある(スピル先がふさがっている)出力先の下方向を空けるか、出力位置を変更する
#VALUE!条件式の範囲サイズが元データと合っていない範囲の行数を揃える(例: A2:D100B2:B100
結果が0行になる条件の文字列に全角/半角・スペースの違いがあるTRIM関数やASC関数でデータを統一する

特に注意したいのが #N/A エラーです。ExcelのFILTER関数には第3引数(該当なしの場合に返す値)があります。

しかし、スプレッドシートのFILTER関数にはこの引数がありません。IFERRORで囲むのが定番の対処法です。

=IFERROR(FILTER(A2:D6, B2:B6="福岡"), "該当データなし")

TIP

#VALUE! エラーは範囲サイズの不一致が原因です。A2:D6 に対して条件を B2:B100 のように行数が違う範囲にすると発生します。範囲の開始行と終了行を揃えてください。

スポンサーリンク

QUERY・ARRAYFORMULAとの違い・使い分け

スプレッドシートには、FILTER以外にもデータを操作する強力な関数があります。用途に応じて使い分けましょう。

比較項目FILTER関数QUERY関数ARRAYFORMULA
主な用途条件に一致する行の抽出抽出+集計+並べ替えを一括既存の関数を全行に一括適用
構文の難易度やさしいやや難(SQL風の構文)関数による
複数条件*/+演算子で対応WHERE句に条件を列挙関数内でIF等を組み合わせ
集計(合計・平均)単体では不可。SUMと組み合わせるSELECT句でSUM/AVGが使えるSUM等を配列で適用
グループ化(部署別合計など)不可GROUP BYで対応不可(ピボットテーブル推奨)
向いている場面シンプルな条件抽出複雑な集計レポート列ごとの計算を一括処理

ざっくりまとめると:

  • 「条件に合う行を取り出すだけ」 → FILTER関数がシンプルで最適
  • 「集計やグループ化もしたい」 → QUERY関数が強力
  • 「全行に同じ計算をかけたい」 → ARRAYFORMULAの出番

迷ったらまずFILTER関数を試してみてください。「条件で絞り込む」だけならFILTERが一番わかりやすいです。

XLOOKUP関数との違いも気になるかもしれません。XLOOKUPは「1つの値を検索して対応するデータを返す」関数です。

一方FILTERは「条件に一致する行をすべて返す」関数です。複数行がヒットする場面ではFILTERが適しています。

XLOOKUPの詳しい使い方は スプレッドシートのXLOOKUP関数の使い方|VLOOKUPとの違いも解説 をご覧ください。

スポンサーリンク

まとめ

この記事では、GoogleスプレッドシートのFILTER関数の使い方を解説しました。

  • 基本: =FILTER(範囲, 条件) で条件に一致する行を自動抽出
  • AND条件: カンマ区切りまたは * 演算子
  • OR条件: + 演算子で条件をつなぐ
  • SORT連携: =SORT(FILTER(...), 列, 順序) で抽出+並べ替え
  • 空結果対策: =IFERROR(FILTER(...), "メッセージ") で #N/A を回避
  • 使い分け: シンプルな抽出はFILTER、集計込みならQUERY

FILTER関数は覚えてしまえばとても使いやすい関数です。まずは自分のデータで試してみてください!


この記事を書いた人

biz-tactics編集部。事務職の現場で本当に使えるExcel・スプレッドシート・AIの技を発信しています。

関連記事

タイトルとURLをコピーしました