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

スポンサーリンク

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

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

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

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

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

スプレッドシートの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関数の基本的な使い方

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

01 data sample table

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

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

=FILTER(A2:D6, B2:B6="東京")
02 formula filter basic

結果はこうなります。

03 result filter basic

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

条件に合う行がまるごとコピーされるのがFILTER関数の特徴です。VLOOKUPが「1つの値を返す」のと対照的に、FILTERは「行全体」を返します。

TIP

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

FILTER関数で複数条件を指定する(AND・OR)

FILTER関数では、複数の条件を組み合わせて絞り込めます。書き方は AND と OR で異なります。

AND条件(すべて満たす)

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

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

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

* 演算子を使う書き方もあります。結果は同じです。

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

OR条件(いずれかを満たす)

OR条件は +(足し算)演算子で条件をつなぎます。

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

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

NOTE

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

AND/OR を組み合わせる

ANDとORを混在させたい場合は、OR条件を () で囲んで * で他の条件と結合します。

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

「東京または大阪」かつ「金額10,000円以上」の行が返ります。

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

部署別データ抽出(プルダウン連動)

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

たとえば、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)
05 result filter sort

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

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

TIP

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

特定の列だけを取り出す

FILTER結果から一部の列だけ取り出したい場合は、配列で列を指定します。

={FILTER(A2:A6, B2:B6="東京"), FILTER(D2:D6, B2:B6="東京")}

A列(日付)とD列(金額)だけが抽出されます。レポートで見せたい項目を絞れるので便利です。

よくあるエラーと対処法

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

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

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

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

TIP

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

データがあるのに0行になるケース

条件は正しそうなのに結果が表示されないときは、データの表記揺れが原因のことがほとんどです。

  • 全角と半角: 「東京」と「東京」(全角半角混在)は別文字として扱われる
  • 前後のスペース: 「東京 」(末尾に空白)と「東京」は別扱い
  • 大文字小文字: アルファベットは区別される(例: “ABC” と “abc”)

対処としては、元データを =TRIM(A2)=ASC(A2) で整形した補助列を作ります。その補助列を条件範囲に指定すれば確実にヒットします。

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

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

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

ざっくりまとめると:

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

FILTER と QUERY の選び分けフロー

どちらを使うか迷ったら、次の順番で判断するとブレません。

  1. 集計が必要か? → 必要なら QUERY(SELECT句でSUM/AVG/COUNTが書ける)
  2. グループ化が必要か? → 必要なら QUERY(GROUP BYで部署別集計などが可能)
  3. 並べ替えも一緒にしたい? → QUERY単独でもFILTER+SORTでも対応可能。シンプルさ重視ならFILTER+SORT
  4. 上記すべてNOで、条件で行を絞り込むだけ? → FILTER が一番読みやすく保守もしやすい

迷ったらまずFILTER関数を試してみてください。シンプルな条件抽出ならFILTERが圧倒的にわかりやすいです。

FILTER と XLOOKUP の違い

XLOOKUPとの違いも気になるかもしれません。

  • XLOOKUP: 1つの値を検索して対応する1行(または1列)だけを返す
  • FILTER: 条件に一致するすべての行を返す

「商品コードから商品名を引きたい」ような1対1の検索はXLOOKUPの出番です。一方、「東京支店の全データを出したい」ような複数行抽出はFILTERの得意分野です。

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

まとめ

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

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

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


この記事を書いた人

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

関連記事

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