FILTER関数の基本と実践例|条件指定のコツも解説
この記事でわかること
FILTER関数は「条件に合う行(または列)だけを抜き出す」ための関数です。
スプレッドシートで「一覧を作り直したい」「条件で絞った表を別シートに作りたい」と思ったとき、FILTERを使うと元データを触らずに“表示だけ”を作れます。
関数なので、元データが増減しても抽出結果は自動で更新されるのが強みです。
一方で、FILTERは配列として結果を展開するため、出力先が詰まっていたり、条件範囲のサイズがズレていたりすると、突然エラーになって止まりがちです。
とくに初心者がつまずきやすいのは「範囲サイズが一致しません」「一致するものは見つかりません」「配列結果は展開されませんでした」の3つです。
この記事では、FILTER関数の基本構文から、実務でよく使う条件指定のコツ、そしてエラーメッセージ別の直し方までをまとめます。
まずは「抽出範囲」と「条件範囲」のサイズを揃えることが最重要です。
ここさえ押さえれば、複数条件やOR条件、部分一致なども同じ考え方で組み立てられます。
- FILTER関数の基本構文と考え方(まず動く最小式の作り方)
- AND / OR / 空白 / 除外 / 部分一致の条件指定テンプレ(コピペで使える型)
- よく使う抽出パターン(SORT / UNIQUE / SORTN 連携で整形まで)
- エラー別の原因とチェック手順(最短で切り分ける順番)
読み終わるころには「抽出ができる」だけでなく、「うまくいかないときにどこを見れば直るか」まで分かる状態を目指します。
サンプルデータを固定(この記事の前提)
例を同じ条件で追えるように、この記事では次のような表を想定して説明します。
A列は氏名、B列は部署、C列は日付、D列は売上、E列はメモのような形です。
例えば、2行目以降にデータが入っている想定で、見出し行(1行目)は除外して扱います。
抽出したい範囲(表示したい列のまとまり)を「抽出範囲」、条件判定に使う列を「条件範囲」と呼びます。
FILTER関数は「抽出範囲」と「条件範囲」の高さ(行数)や幅(列数)を揃える必要があり、ここがエラーの起点になりやすいです。
たとえば =FILTER(A2:D, B2:B="営業") の場合、抽出範囲はA2:Dで、条件範囲はB2:Bです。
この2つはどちらも「2行目以降」という同じ起点なので、基本的にはサイズが一致しやすい形です。
今後の解説では、常に「抽出範囲と条件範囲の開始行を揃える」という前提で式を組み立てていきます。
この前提を意識して読むだけでも、後半のエラー解説が格段に理解しやすくなります。
FILTER関数とは(できること・向いている場面)
FILTER関数は、表データを条件で絞り込んで、該当行だけを別の場所にそのまま展開できる関数です。
「部署が営業の人だけ」「今日以降の日付だけ」「売上が一定以上だけ」のような抽出を、数式1本で作れます。
抽出結果は配列として展開されるため、元データが更新されると抽出結果も自動で更新されます。
FILTERでできること(条件で行/列を抽出)
FILTERは、条件がTRUEになる行(または列)だけを残し、まとめて返します。
条件は1つでも複数でも指定でき、複数条件を指定した場合は基本的にAND条件として扱われます。
条件は「TRUE/FALSEの配列」になる式を書けばよく、値そのものを直接書くわけではありません。
どんな時に便利か(担当者別・期間別・部署別 など)
担当者別の一覧や、期間で切った明細、ステータス別の作業リストなどを作るときに便利です。
特に「元データを加工せず、別シートで表示だけ作りたい」用途と相性が良いです。
また、FILTERの結果をさらに集計やグラフに使うと、更新に強い仕組みになります。
基本の使い方(構文と最初のつまずき回避)
まずは基本構文を押さえ、最小の式が動く状態を作ってから条件を増やすのがコツです。
いきなり複雑な条件にすると、どこで壊れたか分からなくなりがちです。
基本構文(=FILTER(範囲, 条件1, [条件2…]))
FILTER関数の基本形は =FILTER(範囲, 条件) です。
範囲には、返したい結果の範囲を指定します。
条件には、範囲と同じ高さ(または同じ幅)を持つTRUE/FALSEの配列を返す式を書きます。
例えば部署が営業の行だけを返すなら、=FILTER(A2:D, B2:B="営業") のように書きます。
条件はTRUE/FALSEになる式を書く(例:B2:B=”営業”)
B2:B="営業" は、B列の各セルが「営業」かどうかを判定し、TRUE/FALSEの配列を返します。
FILTERはこのTRUEの行だけを抽出範囲から取り出します。
条件部分に "営業" のような文字列を入れる場合はダブルクォーテーションが必要です。
数値の場合は D2:D>=100000 のように、比較演算子を使って書きます。
0件のときの扱い(第3引数の発想/IFERRORとの使い分け)
FILTERは条件に一致する行が1件もない場合、エラー(「一致するものは見つかりません」系)になります。
「0件のときは空欄にしたい」「メッセージを表示したい」なら、第3引数(空の場合の値)を使うのが基本です。
例えば =FILTER(A2:D, B2:B="営業", "該当なし") のように書くと、0件のときに文字が出ます。
IFERRORで包む方法もありますが、他のエラーまで握りつぶす可能性があるので、まずは第3引数を優先すると安全です。
まず動く最小式→条件追加の順で作る(切り分けの型)
最初は =FILTER(A2:D, B2:B<> "") のように「空でない行」を抽出して、展開が動くことを確認します。
次に条件を目的のものに置き換えます。
複数条件にしたい場合も、まずは1条件で動くところまで作ってから、条件を増やしていくと原因特定が速いです。
条件指定のコツ(AND/OR/空白/除外/部分一致)
条件式は「やりたいこと」をTRUE/FALSEの判定に落とし込むと整理しやすいです。
ここでは実務でよく出るパターンを、テンプレとして使える形で紹介します。
AND条件(条件を複数並べる)
FILTERの第2引数以降に条件を複数並べると、AND条件として扱われます。
例えば「営業」かつ「売上が10万以上」なら、=FILTER(A2:D, B2:B="営業", D2:D>=100000) です。
この形は読みやすく、後から条件を足し引きしやすいのがメリットです。
「日付が今月」かつ「部署が営業」のような場合も、条件を分けたまま並べるとミスが減ります。
OR条件(足し算でまとめる/MATCHでまとめる等の考え方)
OR条件は、そのまま条件を複数並べてもORにはならない点が注意です。
典型的な方法は「TRUEを1、FALSEを0として足し算する」やり方です。
例えば「営業または開発」なら、=FILTER(A2:D, (B2:B="営業")+(B2:B="開発")) のように書けます。
足し算の結果が1以上ならTRUE扱いになるため、OR条件として機能します。
候補が多い場合は、リストにまとめて MATCH で判定すると管理しやすいです。
例えば候補部署をG2:Gに並べておき、=FILTER(A2:D, ISNUMBER(MATCH(B2:B, G2:G, 0))) のように書けます。
空白を含む・除外したい(=”” / <>”” / <> “値”)
空白判定は =""(空文字)や <>""(空でない)で書くのが基本です。
例えばメモ(E列)が空でない行だけにするなら =FILTER(A2:D, E2:E<>"") です。
特定の値を除外するなら <> を使います。
例えば部署が「退職」を除外したいなら、=FILTER(A2:D, B2:B<>"退職") のように書けます。
余計なスペース・全角半角の注意(TRIM/CLEANの考え方)
一致しない原因として多いのが、余計なスペース(前後の空白)や、見えない制御文字です。
見た目が同じでも、末尾にスペースが入っていると ="営業" がFALSEになります。
こういうときは、条件側を TRIM で整える発想が有効です。
例えば TRIM(B2:B)="営業" のようにして判定すると、余計な空白の影響を減らせます。
貼り付け由来の不可視文字が疑わしい場合は CLEAN を試すと改善することがあります。
部分一致・正規表現(SEARCH/REGEXMATCHの使い分け)
「メモに特定の単語が含まれる行だけ」なら部分一致が便利です。
単純な部分一致なら SEARCH を使い、ISNUMBER(SEARCH("重要", E2:E)) のように判定できます。
より柔軟に「いずれかの語を含む」などをやるなら REGEXMATCH を使います。
例えば「重要 または 至急」を含むなら、REGEXMATCH(E2:E, "重要|至急") のように書けます。
正規表現は強力ですが、まずはSEARCHで済むかを考えると保守しやすいです。
大文字小文字の扱い(関数側の仕様と対策)
英字の大小を区別したい場合、単純な ="abc" では意図どおりにならないことがあります。
区別が必要なときは、EXACT を使って厳密一致で判定します。
例えば EXACT(F2:F, "ABC") のようにすると、大文字小文字を含めて一致した行だけを抽出できます。
早見表:やりたいこと別の条件式テンプレ(コピペ用)
条件式は「テンプレを持っておく」と作業が速くなります。
次の表は、よくある目的と条件式の型をまとめたものです。
| やりたいこと | 条件式テンプレ(例) | 補足 |
|---|---|---|
| 1つの値で一致 | B2:B="営業" | 文字列は””で囲む |
| 数値が以上 | D2:D>=100000 | 比較演算子を使う |
| 空でない | E2:E<>"" | 空白判定の基本 |
| 特定値を除外 | B2:B<>"退職" | 除外は<> |
| AND条件 | B2:B="営業" と D2:D>=100000 | 条件を別引数で並べる |
| OR条件(2択) | (B2:B="営業")+(B2:B="開発") | 足し算でまとめる |
| 部分一致 | ISNUMBER(SEARCH("重要",E2:E)) | 見つかれば数値 |
| 正規表現 | REGEXMATCH(E2:E,"重要|至急") | 複数語に強い |
実践例:よく使う抽出パターン集(整形も一緒に)
ここでは、実務でそのまま使いやすいパターンを、短い式として並べます。
同じデータ構成(A=氏名、B=部署、C=日付、D=売上)を前提にしているので、置き換えて使えます。
1列条件で抽出(最短例)
部署が営業の人を一覧にするなら、=FILTER(A2:D, B2:B="営業") です。
結果を別シートに置けば、元データが増えても自動で伸びます。
複数条件で抽出(部署×担当者 など)
部署が営業で、かつ氏名が「田中」の行だけなら、=FILTER(A2:D, B2:B="営業", A2:A="田中") です。
条件は増えても読みやすいので、まずこの形を基準にすると整理しやすいです。
日付条件(>= / <= とTODAYの組み合わせ)
今日以降の日付だけ抽出するなら、=FILTER(A2:D, C2:C>=TODAY()) です。
今月だけに絞るなら、月初と月末を作って範囲で判定します。
例えば =FILTER(A2:D, C2:C>=EOMONTH(TODAY(),-1)+1, C2:C<=EOMONTH(TODAY(),0)) のように書けます。
並べ替え(SORTと組み合わせ)
抽出結果を売上の降順に並べたいなら、FILTERの外側にSORTを重ねます。
例えば =SORT(FILTER(A2:D, B2:B="営業"), 4, FALSE) のように書きます。
ここで「4」は抽出範囲A2:Dの4列目(売上)を意味します。
重複排除(UNIQUEと組み合わせ)
部署名の一覧を作り、重複を消したいならUNIQUEを組み合わせます。
例えば =UNIQUE(FILTER(B2:B, B2:B<>"")) のように書くと、空白を除外した部署リストになります。
このリストをOR条件の候補に使うなど、組み合わせると便利です。
上位N件(SORTNと組み合わせ)
抽出した上で上位5件だけ欲しいなら、SORTNを使います。
例えば =SORTN(FILTER(A2:D, B2:B="営業"), 5, 0, 4, FALSE) のように書けます。
「5」が件数で、「4, FALSE」が売上列の降順という意味です。
エラー対応の前に確認すること(最短チェック順)
FILTERのエラーは、原因がいくつかのパターンに集約されます。
まずは次の順番で確認すると、遠回りを減らせます。
結論としては「範囲サイズ」「条件式」「出力先」の3点を先に潰し、最後に綴りや記号を確認する流れにすると、ほとんどのケースは短時間で復旧できます。
チェック順:範囲サイズ → 条件式 → 出力先 → 綴り/記号
最初に見るべきは範囲サイズです。
抽出範囲と条件範囲の高さや幅が揃っていないと、ほかが正しくても動きません。
特に多いのが「抽出範囲はA2:Dなのに、条件範囲がB:Bになっている」など、開始行がズレているケースです。
見出し行を除外するなら、抽出範囲も条件範囲も同じ行(例:2行目)から始めるのが基本です。
複数条件のときも同様で、条件が増えるほど“どれか1つ”の起点ズレで止まりやすくなります。
迷ったら、抽出範囲と条件範囲(条件1〜条件n)をすべて同じ開始行に統一します。
次に条件式がTRUE/FALSEになっているかを確認します。
ここでのコツは「FILTERに入れる前に、条件式単体で正しく判定できているか」を見ることです。
条件が想定より厳しすぎて全部FALSEになっていないか、逆に緩すぎてほぼ全部TRUEになっていないかをチェックします。
その次に、出力先に値が入っていないか、結合セルがないかを確認します。
配列結果は右下に展開されるため、開始セルの周辺だけでなく、結果が届きそうな範囲まで含めて空きがあるかを確認します。
結合セル、保護範囲、別の配列数式の結果など、目に見えにくい障害物があると展開できません。
最後に、関数名の綴りやカッコ、ダブルクォーテーション、区切り文字を見直します。
特に " の閉じ忘れやカッコの対応ズレは、式が長くなるほど起こりやすいので、最小式に戻して積み上げ直すのが安全です。
条件式がTRUE/FALSEになっているかの確認方法
条件部分だけを別セルに置いて、結果がTRUE/FALSEの列として出ているかを見ると切り分けができます。
例えば =B2:B="営業" を単独で入力すると、TRUE/FALSEが縦に並ぶはずです。
ここでエラーになったり、意図と違うTRUEが出るなら、条件式側に原因があります。
もう一歩進めるなら、次のような“見落としやすいズレ”も確認しておくと復旧が速いです。
- 余計なスペースがある:
TRIM(B2:B)="営業"で判定が変わるか - 日付や数値が文字列になっている:比較演算子(
>=など)が全部FALSEになっていないか - OR条件の足し算の左右が同じ形:
(B2:B="営業")+(B2:B="開発")のように範囲が揃っているか
条件式が正しく見えるのに一致しないときは、条件対象のセルを1つ選び、実際に何が入っているか(スペース・改行・全角など)を疑うと改善することが多いです。
出力先に値/結合セルがないかの確認方法
FILTERの結果は、開始セルから右下に向かって自動的に展開されます。
展開先のどこかに値が入っていると「配列結果は展開されませんでした」系のエラーになります。
一見空に見えても、スペースや見えない文字が入っていることもあるので、範囲を選択してDeleteで消すのが確実です。
結合セルがあると展開できないことがあるため、結合を解除してから試します。
また、同じシート内でUNIQUEやSORTなど別の配列数式が動いていると、範囲がぶつかって展開できないことがあります。
開始セルを少し離れた場所に移して再計算すると、原因の切り分けができます。
エラー別まとめ表(メッセージ/主原因/直し方の要点)
よく見るエラーと、最短の対処を表にまとめます。
| エラーメッセージ | 主な原因 | 最短の直し方 |
|---|---|---|
| FILTERの範囲サイズが一致しません | 範囲の高さ/幅が不一致 | 抽出範囲と条件範囲の起点・行数を揃える |
| 一致するものは見つかりません | 条件一致が0件 | 第3引数で0件時の表示を決める |
| 範囲は単一行か単一列 | 条件範囲の形が不適切 | 条件範囲を1列または1行にする |
| 配列結果は展開されませんでした | 出力先に値がある | 展開先を空にする、結合セルを解除 |
| #NAME? | 関数名/区切り誤り | 関数名と区切り文字を確認 |
| 数式の解析エラー | カッコや””の欠落 | 最小式に戻して構文を見直す |
表の上から順に潰していくと、ほとんどのトラブルは解決します。
特に「サイズ不一致」と「展開できない」は、データの中身ではなく“範囲や配置の問題”なので、先に見直すと時短になります。
「FILTERの範囲サイズが一致しません」の直し方
このエラーは、FILTERで最もよく出る代表例です。
原因はほぼ「抽出範囲と条件範囲のサイズが揃っていない」に集約されます。
特に、見出し行の扱い(1行目を含めるか除外するか)や、片方だけ列全体指定にしていると起こりやすいので、まずは“範囲の形”だけを疑うのが近道です。
エラーの意味(抽出範囲と条件範囲の行数/列数不一致)
FILTERは、抽出範囲の各行(または各列)に対して、条件がTRUEかどうかを対応付けます。
そのため、抽出範囲と条件範囲のサイズが一致しないと対応付けができず、エラーになります。
縦に抽出する通常の使い方では「行数が揃っているか」が最重要です。
ここでいう“揃う”は、単に列数が同じという意味ではなく、開始行が同じで、同じ行数ぶん評価できる形になっていることを指します。
条件に「空の場合の値」を指定している時の落とし穴
第3引数(空の場合の値)を入れること自体は問題ありません。
ただし、式を組み立てる過程で、次のような形にしてしまうとサイズ不一致の原因になります。
- 条件側に配列を返す関数を混ぜ、意図せず“複数列”の判定になっている
- 第3引数に、セル範囲(複数セル)を渡してしまっている
「空の場合の値」は文字列や単一の値にしておくと安全です。
たとえば "該当なし" のように、1セル相当の値で指定します。
0件時の表示だけを整えたいなら、第3引数はシンプルにして、条件式側の形をまず安定させるのがおすすめです。
範囲の起点がズレている典型例(A2:A と B:B など)
もっとも多いパターンは、片方が2行目開始でもう片方が列全体指定になっているケースです。
例えば =FILTER(A2:D, B:B="営業") のように書くと、抽出範囲が2行目開始なのに条件範囲は1行目からになり、サイズがずれます。
この場合は B2:B のように起点を揃えるのが基本です。
逆に抽出範囲を A:A にするなら条件範囲も B:B に揃える必要があります。
また、複数条件のときに「条件1はB2:Bだが、条件2がC:Cのまま」など、条件同士で起点がズレているケースも多いです。
たとえば =FILTER(A2:D, B2:B="営業", C:C>=TODAY()) のように書くと、B2:BとC:Cで開始行が違い、やはりサイズ不一致になりやすいので、C2:C に揃えます。
再発防止:範囲は“同じ高さ/幅”に揃える
迷ったら、抽出範囲と条件範囲を同じ行から始めるのが最も安全です。
見出し行を除外したいなら、両方とも2行目開始に統一します。
複数条件でも同様で、すべての条件範囲の起点を揃えると、サイズ不一致をほぼ防げます。
さらに再発防止としては、「列全体指定を使うなら、抽出範囲も条件範囲も列全体に統一する」「2行目開始にするなら、すべて2行目開始に統一する」のどちらかにルールを決めておくと、後から式を編集しても崩れにくくなります。
最後に、範囲が合っているのに直らない場合は、条件式を単独で入力してTRUE/FALSEが同じ行数で出ているかを確認します。
ここが揃っていれば、少なくとも“サイズ不一致”の原因はほぼ解消できています。
「一致するものは見つかりません」の直し方(0件運用)
このエラーは、条件に合うデータが0件のときに発生します。
実際には「条件が間違っている」場合もあれば、「0件が正常」な場合もあります。
ポイントは、まず「0件があり得る条件なのか」を決めることです。
0件が起こり得るなら、エラーを出しっぱなしにせず、表示や運用のルールまで整えると使いやすくなります。
エラーの意味(条件一致が0件)
FILTERは、1件も一致がない場合に空の表を返すのではなく、エラーとして扱います。
そのため、0件があり得る条件なら、あらかじめ0件時の表示方法を決めておくと運用が安定します。
逆に「本来は必ず1件以上あるはず」なのに0件になる場合は、条件式かデータ側に問題がある可能性が高いので、ここから原因を切り分けます。
条件の見直し(空白・スペース・表記ゆれ)
まずは、条件が厳しすぎないかを確認します。
次に、表記ゆれ(全角半角、スペース、改行、末尾の空白)がないかを疑います。
部署名の表が「営業部」なのに条件が「営業」だと一致しません。
部分一致にすべきか、完全一致にすべきかも、ここで整理します。
もう一段だけチェックするなら、次のような点も見ておくと安心です。
- 条件列に空白行が混ざっていないか(想定外に空欄が多いと、条件が厳しく感じる)
- 数値や日付が「文字列」になっていないか(比較演算子で弾かれて全部FALSEになることがある)
- 余計なスペース対策として
TRIMを挟むべきか(TRIM(B2:B)="営業"のように)
0件時は空欄/メッセージにする(第3引数 or IFERROR)
0件が正常に起こり得るなら、第3引数で表示を決めます。
例えば空欄にしたいなら =FILTER(A2:D, B2:B="営業", "") のようにします。
メッセージにしたいなら "該当なし" を入れます。
単に文字を出すだけでなく、用途によっては「条件を見直してください」など行動が分かるメッセージにしておくと親切です。
また、0件時の扱いは「後工程」を意識して決めると失敗しにくいです。
たとえば抽出結果を別の集計に渡すなら空欄の方が扱いやすく、画面で人が見る用途ならメッセージの方が分かりやすい、という違いがあります。
どうしても他のエラーもまとめて扱いたいときはIFERRORを使えますが、原因の見落としが増える点には注意します。
まずは第3引数で0件だけを制御し、それでも必要な場合にだけIFERRORを検討すると安全です。
「単一行/単一列」「展開されませんでした」の直し方
この2つは「条件範囲の形」と「出力先の空き」が原因になりやすいエラーです。
どちらも、式そのものが大きく間違っていないのに出ることがあるため、チェックポイントを覚えておくと速く直せます。
この章では「どこを見れば直るか」を先に決め、同じミスを繰り返さないための考え方もまとめます。
「範囲は単一行か単一列にしてください」(指定範囲/向きの見直し)
条件範囲が2次元(複数行かつ複数列)の形になっていると、このエラーが出ることがあります。
FILTERの条件は、基本的に「1列ぶんのTRUE/FALSE」または「1行ぶんのTRUE/FALSE」を渡す想定です。
そのため、条件として B2:C のように2列を指定してしまうと、意図せず2次元の判定になり、処理できずに止まります。
まずは条件範囲が「縦1列」になっているかを確認し、複数列の条件を作りたい場合は、列ごとに判定してANDで組み合わせます。
例えば「部署が営業」かつ「日付が今日以降」のように、列が違う条件は次のように書きます。
=FILTER(A2:D, B2:B="営業", C2:C>=TODAY())
また、OR条件で足し算を使う場合も、足し算の左右が“同じ形(同じ列範囲)”になっているかが重要です。
- OK:
(B2:B="営業")+(B2:B="開発") - NG:
(B2:B="営業")+(C2:C>=TODAY())(列が違うため意図が崩れやすい)
列が違うOR条件を作りたい場合は、判定式を同じ形に揃える(例えば同じ列で判定できる形に見直す)か、別の設計(候補リスト + MATCHなど)で組むと安全です。
「配列結果は展開されませんでした」(出力先を空ける)
FILTERの結果が展開される範囲に、何かしらの値が入っていると発生します。
見た目が空でも、スペースや数式が入っていることがあります。
展開先は「開始セルの右下方向」に広がるため、開始セルの近くだけでなく、結果が到達しそうな範囲まで含めて確認するのがコツです。
まずは展開予定の右下方向を広めに選択して削除し、結合セルがあれば解除してから再計算します。
他の数式や手入力の表と重ならない位置に結果を置くのも、安定運用のコツです。
とくに、同じシート内で別の配列数式(UNIQUEやSORTなど)を使っている場合、結果範囲がぶつかって気づきにくいので注意します。
ありがちな原因:既存の値、結合セル、保護範囲 など
既存の値は、1セルでも残っていると展開が止まります。
結合セルは、展開の形と合わないとエラーになりやすいです。
結合が残っていると「空きがあるのに展開できない」状態になることがあります。
また、保護範囲で編集できないセルが展開先に含まれている場合も、結果が置けずにエラーになることがあります。
共有シートや権限が分かれているシートでは、保護範囲が原因のことも多いです。
最後に、見落としやすいのが「見た目は空でも値がある」ケースです。
スペース、空文字(""を返す数式)、非表示の文字などが入っていると展開を邪魔します。
迷ったら、展開先になりそうな範囲を選択して一度クリアし、結果が置ける“まっさらな領域”に式を移動して動作確認すると、原因の切り分けが一気に進みます。
「#NAME?」「数式の解析エラー」の直し方
この2つは「入力ミス」や「設定差」が原因で出やすいエラーです。
特に、FILTER自体のロジックが正しくても「文字の種類」「区切り」「カッコの対応」だけで止まるため、落ち着いて“構文だけ”を確認すると早く直せます。
基本は、いったん最小式に戻して、段階的に戻す方法が最短です。
「#NAME?」(関数名・区切り文字・言語/ロケール)
#NAME? は、関数名を認識できないときに出ます。
まずは「FILTERの綴り」が正しいかを確認します。
全角になっていたり、余計な文字が混じっていたり、コピー時に不可視文字が入っていると認識されないことがあります。
次に見落としやすいのが、区切り文字(引数の区切り)です。
環境によって区切りがカンマ,ではなくセミコロン;になる場合があります。
自分のシートで他の関数(例:SUMやIF)がどの区切りで動いているかを確認し、FILTERも同じ区切りに揃えます。
また、関数名が英語表記のままでも動くことが多い一方で、ロケール設定の影響で「小数点」「日付」「区切り」がズレて別エラーに繋がることがあります。
区切りを直しても解消しない場合は、いったん次のような最小式で動作確認をします。
=FILTER(A2:D, B2:B<>"")(または=FILTER(A2:D; B2:B<>""))
これが動けば、関数名や区切りは問題なしと判断でき、次は条件式側のミスに絞れます。
「数式の解析エラー」(カッコ/ダブルクォーテーション/区切りの漏れ)
解析エラーは、カッコの閉じ忘れ、ダブルクォーテーションの漏れ、区切りの不足などで起こります。
複数条件にしたときや、OR条件で足し算・MATCH・REGEXMATCHなどを組み合わせたときに、カッコの対応が崩れるケースが多いです。
まずは =FILTER(A2:D, B2:B<>"") のような最小式に戻し、そこから1つずつ要素を足していきます。
たとえば次のように「1条件で動く」→「2条件にする」→「式を複雑化する」の順に進めると、どこで壊れたかが分かります。
- 1条件:
=FILTER(A2:D, B2:B="営業") - 2条件:
=FILTER(A2:D, B2:B="営業", D2:D>=100000) - OR条件:
=FILTER(A2:D, (B2:B="営業")+(B2:B="開発"))
エラーが出たら、まず確認するのは次のポイントです。
- ダブルクォーテーションが左右セットになっているか(
"営業"の閉じ忘れがないか) - カッコが開いた分だけ閉じているか(特にOR条件やMATCHを挟んだとき)
- 引数の区切りが環境に合っているか(
,か;) - 比較演算子の左右が正しいか(
>=の前後に余計な文字がないか)
式が長い場合は、条件を別セルで作ってTRUE/FALSEの列として確認してから合体するとミスが減ります。
例えば、G列に =B2:B="営業"、H列に =D2:D>=100000 を置いてから、FILTER側ではその結果を使う発想にすると、構文の壊れた場所が特定しやすくなります。
どうしても直らないときは、式の一部を一時的に削って「どこまでなら解析できるか」を確認し、最後に削った部分だけを見直すのが近道です。
まとめ:最短で直すチェックリスト
FILTER関数は便利ですが、エラーの多くは「範囲サイズ」「条件式」「出力先」の3点に集約されます。
まずは抽出範囲と条件範囲の起点とサイズを揃え、次に条件がTRUE/FALSEになっているかを確認します。
その上で、展開先が空いているか、最後に綴りや記号を見直せば、ほとんどのケースは短時間で解決できます。
特に最初の「範囲サイズ」は、1行だけズレていても止まるため、迷ったら抽出範囲と条件範囲を同じ開始行(例:どちらも2行目開始)に揃えるのが安全です。
次の「条件式」は、条件部分だけを単独で入力してTRUE/FALSEが並ぶかを確認すると切り分けができます。
想定外に全部FALSEになる場合は、表記ゆれやスペース、全角半角、日付の型(文字列になっていないか)も合わせてチェックします。
「出力先」は見落としがちで、1セルでも値が残っていると展開できません。
右下方向に十分な空きがあるか、結合セルが混ざっていないか、保護範囲にぶつかっていないかも確認しておくと安心です。
0件が起こり得る抽出では、第3引数で表示を整えると運用が安定します。
空欄にするのか、"該当なし" のようなメッセージにするのかを決めておけば、ユーザー側も「条件が間違っているのか、0件が正常なのか」を判断しやすくなります。
最後に、式は一度テンプレとして保存しておくと、別シートや別案件でも使い回せます。
AND/OR、日付条件、部分一致なども同じ考え方で応用できるので、まずは「最小式が動く状態」から少しずつ拡張する流れを習慣にすると、FILTERで詰まる回数が一気に減ります。