データ抽出の達人になろう!第2弾!GoogleスプレッドシートのFILTER関数を徹底解説

Sheet基本

FILTER関数 完全ガイド
条件で行を絞り込む・複数条件・実務パターン

VLOOKUPが「1件を引く」のに対し、FILTERは「条件に合う行を全件返す」。現場のデータ抽出作業を関数1本で置き換えられる。

GASとの関係:JavaScriptの filter() メソッドと同じ発想

GASの配列操作で使う array.filter() は、スプレッドシートのFILTER関数と全く同じ考え方です。関数を理解していると、GASのコードが直感的に読めるようになります。

GASで自動化を学ぶ →
目次

FILTERとは何か

FILTER関数は、範囲の中から条件に一致する行全体を返す関数です。VLOOKUPが「1行1列の値を返す」のとは異なり、FILTERは複数行・複数列をまとめて返せます。

オートフィルタを手動でかける作業を関数で自動化したもの、というイメージが近いです。

基本構文

=FILTER(範囲, 条件1, [条件2, ...])
引数内容
範囲返したいデータ全体(複数列でもOK)
条件1TRUE/FALSEを返す式(範囲と同じ行数が必要)
条件2以降AND条件として追加(省略可)

基本的な使い方

単一条件でフィルタ

// A列が「東京」の行をB〜D列ごと返す
=FILTER(A2:D100, A2:A100="東京")

数値の条件

// C列(売上)が50000以上の行を返す
=FILTER(A2:D100, C2:C100>=50000)

複数条件(AND・OR)

AND条件(両方を満たす)

// 東京 かつ 売上50000以上
=FILTER(A2:D100, (A2:A100="東京") * (C2:C100>=50000))

条件をアスタリスク(*)でつなぐとAND条件になります。

OR条件(どちらかを満たす)

// 東京 または 大阪
=FILTER(A2:D100, (A2:A100="東京") + (A2:A100="大阪"))

プラス(+)でつなぐとOR条件になります。

実務でよく使うパターン

パターン1:担当者別のデータ抽出

// E2に担当者名を入力すると、その担当者の案件一覧が動的に表示される
=FILTER(受注!A2:F100, 受注!C2:C100=E2, "データなし")

パターン2:日付範囲の絞り込み

// 開始日〜終了日の範囲でデータ抽出
=FILTER(A2:D100, (B2:B100>=開始日) * (B2:B100<=終了日))

パターン3:空白行を除外する

// A列が空白でない行だけを返す
=FILTER(A2:D100, A2:A100<>"")

パターン4:SORT と組み合わせて並べ替えも同時に

// 東京のデータを売上の降順で返す
=SORT(FILTER(A2:D100, A2:A100="東京"), 3, FALSE)

見つからない場合のエラー処理

// 第3引数に「見つからない場合」の値を指定できる
=FILTER(A2:D100, A2:A100="北海道", "該当なし")

指定しないと条件に一致するデータがゼロのとき #N/A が表示されます。実務では必ず指定しておきましょう。

FILTERとVLOOKUPの使い分け

状況使うべき関数
1件のデータを引きたいVLOOKUP / XLOOKUP
条件に合う複数行を全部返したいFILTER
重複を除いたリストが欲しいUNIQUE(+ FILTER)
並べ替えも同時にしたいSORT(+ FILTER)

この知識をGASで活かす

GASでデータの絞り込みを行うとき、array.filter(row => row[2] === "東京") のように書きます。スプレッドシートのFILTERと全く同じ発想です。

Free Newsletter

AIを業務に活かしたいなら
SMR-Labメルマガ

毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。

▶ 無料で登録する

📧 無料メルマガ登録

DX・AI活用のヒントを週1回お届け。登録特典:すぐ使えるプロンプト集&GASテンプレート。

登録情報は第三者に提供しません。いつでも配信停止できます。

目次