「売上データから東京支店だけ抜き出したい」「今月の受注だけ一覧にしたい」。こんな場面、仕事でよく出てきますよね。
フィルター機能で手動で絞り込む方法もありますが、条件が変わるたびにポチポチ操作するのは面倒です。
しかも、元データに手を加えたくない場面も多いはず。
そんなときに使えるのが 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行目 | 田中 | 東京 | ノートPC | 150000 |
| 3行目 | 佐藤 | 大阪 | モニター | 45000 |
| 4行目 | 鈴木 | 東京 | キーボード | 8000 |
| 5行目 | 高橋 | 名古屋 | ノートPC | 140000 |
| 6行目 | 田中 | 東京 | マウス | 3000 |
やりたいこと: B列が「東京」の行だけを抽出する。
空いているセル(たとえば F2)に次の数式を入力します。
=FILTER(A2:D6, B2:B6="東京")
結果はこうなります。
| F列 | G列 | H列 | I列 |
|---|---|---|---|
| 田中 | 東京 | ノートPC | 150000 |
| 鈴木 | 東京 | キーボード | 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:D100 と B2: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の技を発信しています。
