【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み

【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
🛡️ 超解決

スプレッドシートで大量のデータから特定の条件に合う行だけを抽出したい場面は多いと思います。フィルタ機能を使う方法もありますが、毎回手動で設定し直すのは手間です。FILTER関数を使えば、数式1つでリアルタイムにデータを絞り込めるため、元データを変えずに動的な抽出が可能になります。この記事では、FILTER関数の基本構文から複数条件の指定方法、他の関数との組み合わせまでを解説します。

【要点】FILTER関数でデータを自在に抽出する3つのポイント

  • =FILTER(範囲, 条件1, [条件2, …]): 第1引数に抽出したいデータ範囲、第2引数以降に条件式を指定することで、条件を満たす行だけを返します。
  • 複数条件はAND・ORで組み合わせる: すべての条件を満たす行を抽出するには条件式をカンマで並べ、いずれかの条件に合致する行を抽出するにはプラス記号(+)で条件式をつなぎます。
  • 他の関数と組み合わせて動的な抽出を実現: SORT関数やUNIQUE関数と組み合わせると、抽出結果を並べ替えたり重複を除去したりできます。

ADVERTISEMENT

FILTER関数の仕組みとできること

FILTER関数は、指定した条件に合致する行を元のデータから抽出する関数です。フィルタ機能と違い、元のデータを変更せずに数式だけで抽出結果を表示します。そのため、元データを編集しても抽出結果が自動的に更新されるというメリットがあります。また、条件をセル参照にしておけば、条件を変更するだけで抽出結果が動的に変わります。

基本的な構文は「=FILTER(範囲, 条件1, [条件2, …])」です。範囲には抽出したいセル範囲(列全体や複数列)を指定し、条件にはTRUE/FALSEを返す式を書きます。条件を複数指定すると、すべての条件を満たす行(AND条件)が抽出されます。OR条件を使いたい場合は、条件式同士を「+」でつなぎます。

FILTER関数の基本操作手順

ここでは、売上データから特定の商品だけを抽出する例を使って、基本操作を説明します。データはA列に商品名、B列に売上額が入力されていると仮定します。

単一条件で抽出する

  1. 抽出結果を表示するセルを選択する
    まず、結果を表示したいセル(たとえばD1)をクリックします。
  2. FILTER関数を入力する
    セルに「=FILTER(A:B, A:A=”りんご”)」と入力します。これは、A列が「りんご」に等しい行をA:B範囲から抽出する意味です。数式を入力したらEnterキーを押します。
  3. 抽出結果を確認する
    りんごの行だけがD列以降に表示されます。元データを変更すると、結果も自動的に更新されます。

複数条件(AND)で抽出する

  1. 条件を追加する
    先ほどの数式に、さらにB列が500以上の行だけ抽出したい場合、「=FILTER(A:B, A:A=”りんご”, B:B>=500)」とします。条件式をカンマで区切ることで、AND条件になります。
  2. Enterキーで確定する
    すると、りんごのうち売上が500以上の行のみが抽出されます。

複数条件(OR)で抽出する

  1. OR条件を記述する
    商品名が「りんご」または「みかん」の行を抽出したい場合は、「=FILTER(A:B, (A:A=”りんご”)+(A:A=”みかん”))」と書きます。条件式を丸括弧で囲み、プラス記号でつなぐことでOR条件になります。
  2. 結果を確認する
    両方の商品を含む行が抽出されます。

条件をセル参照で動的にする

  1. 条件を入力するセルを作成する
    たとえばセルE1に抽出したい商品名を入力するセルを用意します。
  2. FILTER関数でそのセルを参照する
    「=FILTER(A:B, A:A=E1)」と入力します。これで、E1の値を変更するだけで抽出結果が変わります。
  3. 値を変えてテストする
    E1に「みかん」と入力すると、即座にみかんの行に切り替わります。

FILTER関数を使うときの注意点とよくあるエラー

FILTER関数は便利ですが、いくつかの注意点があります。ここでは、初心者がつまずきやすいポイントを解説します。

抽出結果の範囲が足りないとエラーになる

FILTER関数は、結果を表示するセルから下方向にデータを展開します。もし、結果を表示しようとしているセルの下に他のデータが存在すると、エラー「#REF!」が発生します。このエラーを防ぐには、抽出結果を表示する領域を十分に空けておくか、結果を別のシートに出力すると良いでしょう。

条件式の書き方に注意する

条件式では、比較演算子(=, >, <, >=, <=, <>)やワイルドカードは使えません。部分一致をしたい場合は、FIND関数やSEARCH関数を組み合わせる必要があります。たとえば、商品名に「りん」を含む行を抽出するには「=FILTER(A:B, ISNUMBER(FIND(“りん”, A:A)))」とします。

空白行があると抽出結果がずれる

元データに空白行がある場合、FILTER関数は空白行も条件判定の対象とします。空白行は条件に合致しないため抽出されませんが、結果の行番号は元データの行番号に基づきません。そのため、抽出結果は連続した行に表示され、空白行はスキップされます。問題になることは少ないですが、元データの空白行が多くある場合は、あらかじめ空白行を削除しておくと見やすくなります。

配列として出力されるため、セルの編集に注意する

FILTER関数の結果は配列(スピル範囲)として出力されます。そのため、結果のセルを個別に編集することはできません。編集しようとするとエラー「#REF!」が表示されます。抽出結果を編集したい場合は、結果をコピーして値のみ貼り付ける必要があります。

ADVERTISEMENT

FILTER関数とQUERY関数の違い

FILTER関数とよく似た関数にQUERY関数があります。どちらもデータを抽出する関数ですが、用途や記述方法が異なります。以下の比較表で違いを確認してください。

項目 FILTER関数 QUERY関数
構文のわかりやすさ シンプルで覚えやすい SQLライクでやや複雑
複数条件の指定 ANDはカンマ、ORは+で直感的 WHERE句でAND/ORを記述
部分一致検索 FIND関数などとの組み合わせが必要 LIKE演算子やcontainsキーワードで可能
並べ替え機能 別途SORT関数と組み合わせる ORDER BY句で内部で並べ替え可能
集計機能 別途SUMIFSなどを使う GROUP BYや集計関数を直接記述

まとめ

FILTER関数を使えば、数式1つで条件に合う行だけを動的に抽出できます。基本は単一条件ですが、ANDやOR条件、セル参照の活用で柔軟な絞り込みが可能です。また、SORT関数やUNIQUE関数と組み合わせると、抽出結果を並べ替えたり重複を除去したりできます。まずは簡単な条件から試し、慣れてきたら複数条件や他の関数との連携に挑戦してみてください。QUERY関数と比較しながら、用途に応じて使い分けるとより効率的です。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。