Sheet基本
FILTER関数 完全ガイド
FILTER関数 完全ガイド
条件で行を絞り込む・複数条件・実務パターン
VLOOKUPが「1件を引く」のに対し、FILTERは「条件に合う行を全件返す」。現場のデータ抽出作業を関数1本で置き換えられる。
GASとの関係:JavaScriptの filter() メソッドと同じ発想
GASの配列操作で使う array.filter() は、スプレッドシートのFILTER関数と全く同じ考え方です。関数を理解していると、GASのコードが直感的に読めるようになります。
目次
FILTERとは何か
FILTER関数は、範囲の中から条件に一致する行全体を返す関数です。VLOOKUPが「1行1列の値を返す」のとは異なり、FILTERは複数行・複数列をまとめて返せます。
オートフィルタを手動でかける作業を関数で自動化したもの、というイメージが近いです。
基本構文
=FILTER(範囲, 条件1, [条件2, ...])
| 引数 | 内容 |
|---|---|
| 範囲 | 返したいデータ全体(複数列でもOK) |
| 条件1 | TRUE/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分・完全無料。
