- クラウドサービス
スプレッドシートFILTER関数の使い方|複数条件とUNIQUE・SORT
FILTER関数とは、表の中から条件に合う行(または列)だけを取り出して、別の場所に並べる関数です。 書式は FILTER(範囲, 条件1, [条件2, ...]) で、元の表が変わると結果も自動で変わります。
この記事では、AND・OR・NOT・部分一致・期間指定を「やりたいこと → 数式」の逆引き表にまとめ、UNIQUE・SORT と入れ子にするときの順番による結果の違い、Excel版FILTERとの引数の対応、うまく抽出できないときの原因と直し方までを、1つのサンプル表で通して説明します。QUERY関数は使わず、関数の組み合わせだけで抽出する方法に絞っています。
確認環境:関数の構文と注意点は、Google ドキュメント エディタ ヘルプと Microsoft サポートの各関数のページ(2026年10月5日に参照)に沿っています。各数式の下の「抽出結果」は、同じサンプル表・同じ条件の抽出を Python 3.11.15 で求めた値です。
FILTER関数の逆引き早見表
サンプル表は A1:F13(1行目が見出し、データは2〜13行目)で、列は A=日付、B=地域、C=商品コード、D=商品名、E=数量、F=金額です。
| やりたいこと | 数式 |
|---|---|
| 1つの条件で抽出 | =FILTER(A2:F13, B2:B13="東") |
| AND(すべて満たす):カンマで並べる | =FILTER(A2:F13, B2:B13="東", F2:F13>=40000) |
| AND:掛け算で書く | =FILTER(A2:F13, (B2:B13="東")*(F2:F13>=40000)) |
| OR(どれかを満たす):足し算で書く | =FILTER(A2:F13, (B2:B13="南")+(B2:B13="北")) |
| OR:同じ列なら正規表現でも書ける | =FILTER(A2:F13, REGEXMATCH(B2:B13, "^[南北]$")) |
| NOT(〜以外) | =FILTER(A2:F13, NOT(B2:B13="東")) または B2:B13<>"東" |
| ANDとORの組み合わせ | =FILTER(A2:F13, (B2:B13="東")*((C2:C13="K-01")+(C2:C13="K-04"))) |
| 部分一致(大文字小文字を区別する) | =FILTER(A2:F13, REGEXMATCH(D2:D13, "PC")) |
| 部分一致(大文字小文字を区別しない) | =FILTER(A2:F13, ISNUMBER(SEARCH("pc", D2:D13))) |
| 前方一致(〜で始まる) | =FILTER(A2:F13, REGEXMATCH(D2:D13, "^ノート")) |
| 後方一致(〜で終わる) | =FILTER(A2:F13, REGEXMATCH(D2:D13, "型$")) |
| 期間指定(開始日〜終了日) | =FILTER(A2:F13, A2:A13>=DATE(2026,9,10), A2:A13<=DATE(2026,9,30)) |
| 条件をセルで指定 | =FILTER(A2:F13, B2:B13=H1) |
| 空白でない行だけ | =FILTER(A2:F13, NOT(ISBLANK(A2:A13))) |
| 行を絞ったうえで列も絞る | =FILTER(FILTER(A2:F13, B2:B13="西"), {TRUE,FALSE,FALSE,TRUE,FALSE,TRUE}) |
| 一致する行がないときの表示を決める | =IFNA(FILTER(A2:F13, B2:B13="中央"), "該当なし") |
| 重複をなくして並べ替える | =SORT(UNIQUE(FILTER(C2:C13, B2:B13="東")), 1, TRUE) |
| 抽出して金額の大きい順に並べる | =SORT(FILTER(A2:F13, B2:B13="東"), 6, FALSE) |
複数条件は「カンマで並べるとAND」「掛け算もAND」「足し算はOR」と覚えると、ほとんどの抽出が書けます。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「スプレッドシートFILTER関数の使い方|複数条件とUNIQUE・SORT」
サンプル表とFILTER関数の基本
この記事で使うサンプル表
下の表をコピーして A1 セルに貼り付けると、記事の数式をそのまま試せます。
日付 地域 商品コード 商品名 数量 金額
2026/08/28 東 K-02 モニター 24型 2 44000
2026/09/01 西 K-01 USBケーブル 10 10000
2026/09/03 東 K-04 ノート A4 20 4000
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/09/12 西 K-04 ノート A4 30 6000
2026/09/15 東 K-01 USBケーブル 5 5000
2026/09/18 北 K-02 モニター 24型 1 22000
2026/09/22 東 K-02 モニター 24型 1 22000
2026/09/25 西 K-05 デスクトップpc 1 120000
2026/10/01 東 K-03 ノートPC 14型 1 98000
2026/10/02 南 K-01 USBケーブル 3 3000
構文と3つのルール
FILTER(範囲, 条件1, [条件2, ...])
| 引数 | 内容(Google ドキュメント エディタ ヘルプの説明) |
|---|---|
| 範囲 | フィルタ処理するデータ |
| 条件1 | 範囲の最初の列(または行)に対応する TRUE / FALSE の値を持つ列(または行)、あるいは TRUE / FALSE に評価される配列数式 |
| 条件2 以降 | 省略可。追加の条件 |
ヘルプには、使ううえでのルールが3つ書かれています。
| ルール | 意味 |
|---|---|
| 条件の引数は、範囲と同じ長さを指定する | 範囲が2〜13行目なら、条件も2〜13行目にそろえる |
| 行の条件と列の条件を混在させない | 1つのFILTERでは、行か列のどちらか一方だけを絞る |
条件を満たす値が見つからないときは #N/A を返す |
「該当なし」を表示したいときは IFNA で包む |
いちばん基本の形で、地域が「東」の行を取り出します。
=FILTER(A2:F13, B2:B13="東")
抽出結果(同じ抽出を Python で求めた値。以下同じ):
2026/08/28 東 K-02 モニター 24型 2 44000
2026/09/03 東 K-04 ノート A4 20 4000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/09/15 東 K-01 USBケーブル 5 5000
2026/09/22 東 K-02 モニター 24型 1 22000
2026/10/01 東 K-03 ノートPC 14型 1 98000
B2:B13="東" は、12行それぞれについて TRUE か FALSE を返します。FILTER は、条件が TRUE になった行だけを、元の並び順のまま返します。 数式を入力するのは左上の1セルだけで、結果は右と下のセルに広がって表示されます。広がる先のセルは空けておいてください。
複数条件:AND・OR・NOT の書き方
AND:カンマで並べる
条件をカンマで区切って並べると、すべてを満たす行だけが残ります。ヘルプの使用例 FILTER(A2:B26, A2:A26 > 5, D2:D26 < 10) と同じ形です。
=FILTER(A2:F13, B2:B13="東", F2:F13>=40000)
2026/08/28 東 K-02 モニター 24型 2 44000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/10/01 東 K-03 ノートPC 14型 1 98000
AND:掛け算で書く
条件をかっこで囲んで * でつなぐ書き方もあります。TRUE を 1、FALSE を 0 として計算するので、両方が TRUE のときだけ 1 × 1 = 1 になり、その行が残ります。
=FILTER(A2:F13, (B2:B13="東")*(F2:F13>=40000))
2026/08/28 東 K-02 モニター 24型 2 44000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/10/01 東 K-03 ノートPC 14型 1 98000
カンマの書き方と同じ3行です。掛け算の書き方は、次のORと組み合わせるときに役立ちます。
OR:足し算で書く
+ でつなぐと、どちらかが TRUE なら合計が 1 以上になり、その行が残ります。
=FILTER(A2:F13, (B2:B13="南")+(B2:B13="北"))
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/18 北 K-02 モニター 24型 1 22000
2026/10/02 南 K-01 USBケーブル 3 3000
ORの条件をカンマで並べると、ANDとして扱われてしまいます。 =FILTER(A2:F13, B2:B13="南", B2:B13="北") は「南であり、かつ北である行」を探すことになり、一致する行がなくなります。
同じ列に対するORは、正規表現でも書けます。次の2つは同じ結果になります。
=FILTER(A2:F13, REGEXMATCH(B2:B13, "^[南北]$"))
=FILTER(A2:F13, REGEXMATCH(B2:B13, "^(南|北)$"))
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/18 北 K-02 モニター 24型 1 22000
2026/10/02 南 K-01 USBケーブル 3 3000
^ は先頭、$ は末尾を表します。[南北] は「南か北のどちらか1文字」、(南|北) は「南または北」です。2文字以上の語を並べるときは (東京|大阪) のように後者の書き方を使います。
NOT:〜以外
NOT(...) で条件を反転します。<> を使っても同じです。ここではカンマでANDを足して、「東以外で、金額が90,000以上」を取り出します。
=FILTER(A2:F13, NOT(B2:B13="東"), F2:F13>=90000)
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/25 西 K-05 デスクトップpc 1 120000
ANDとORを組み合わせる
「地域が東で、商品コードが K-01 か K-04」のように組み合わせるときは、ORの部分をかっこでまとめてから掛けます。
=FILTER(A2:F13, (B2:B13="東")*((C2:C13="K-01")+(C2:C13="K-04")))
2026/09/03 東 K-04 ノート A4 20 4000
2026/09/15 東 K-01 USBケーブル 5 5000
| 書き方 | 意味 | 使いどころ |
|---|---|---|
条件A, 条件B |
A かつ B | ANDだけのとき。いちばん読みやすい |
(条件A)*(条件B) |
A かつ B | ORと混ぜるとき |
(条件A)+(条件B) |
A または B | ORのとき |
(条件A)*((条件B)+(条件C)) |
A かつ(B または C) | ANDとORの組み合わせ |
NOT(条件A) |
A 以外 | 除外したいとき |
* や + でつなぐときは、条件を1つずつかっこで囲みます。 かっこがないと、比較より先に掛け算や足し算が計算され、意図と違う結果になります。
部分一致:REGEXMATCH と SEARCH
FILTER の条件に「〜を含む」を書くときは、TRUE / FALSE を返す関数を組み合わせます。
| 関数 | 構文 | 大文字小文字 | 特徴 |
|---|---|---|---|
| REGEXMATCH | REGEXMATCH(テキスト, 正規表現) |
区別する | テキストの一部が正規表現に一致すれば TRUE。先頭・末尾・複数候補も書ける |
| SEARCH | SEARCH(検索文字列, 検索対象のテキスト, [開始位置]) |
区別しない | 見つかった位置を数値で返す。ISNUMBER で TRUE / FALSE に直して使う |
REGEXMATCH:大文字小文字を区別する
=FILTER(A2:F13, REGEXMATCH(D2:D13, "PC"))
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/10/01 東 K-03 ノートPC 14型 1 98000
商品名に小文字の「pc」を含む「デスクトップpc」は、ここでは抽出されません。
SEARCH:大文字小文字を区別しない
SEARCH は見つかった位置を数値で返します。見つからない行では数値が返らないので、 ISNUMBER で包み、「数値が返ったら TRUE」に直します。
=FILTER(A2:F13, ISNUMBER(SEARCH("pc", D2:D13)))
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/09/25 西 K-05 デスクトップpc 1 120000
2026/10/01 東 K-03 ノートPC 14型 1 98000
「ノートPC 14型」と「デスクトップpc」の両方が抽出されました。SEARCH は引数の順番が「探す文字列、探される側のテキスト」です。ヘルプには、順序を逆にすると #VALUE! エラーが返される可能性があると書かれています。
前方一致・後方一致
=FILTER(A2:F13, REGEXMATCH(D2:D13, "^ノート"))
2026/09/03 東 K-04 ノート A4 20 4000
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/09/12 西 K-04 ノート A4 30 6000
2026/10/01 東 K-03 ノートPC 14型 1 98000
=FILTER(A2:F13, REGEXMATCH(D2:D13, "型$"))
2026/08/28 東 K-02 モニター 24型 2 44000
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/09/18 北 K-02 モニター 24型 1 22000
2026/09/22 東 K-02 モニター 24型 1 22000
2026/10/01 東 K-03 ノートPC 14型 1 98000
| やりたいこと | 正規表現 | 例 |
|---|---|---|
| 〜を含む | そのまま書く | "PC" |
| 〜で始まる | 先頭に ^ |
"^ノート" |
| 〜で終わる | 末尾に $ |
"型$" |
| 完全に一致 | ^ と $ で挟む |
"^ノート A4$" |
| 候補の文字のどれか1文字 | 角かっこで囲む | "[南北]" |
REGEXMATCH はテキスト専用です。 ヘルプには、入力値にはテキストを指定し、数値を指定する場合は TEXT 関数でテキストに変換すると書かれています。数量や金額の列に使うときは、REGEXMATCH(TEXT(E2:E13, "0"), "^1") のように変換してから渡します。
期間指定:開始日と終了日で絞る
日付の条件は、開始日と終了日の2つをカンマ(AND)で並べます。日付は DATE(年, 月, 日) で書くと、表示形式に左右されずに比較できます。
=FILTER(A2:F13, A2:A13>=DATE(2026,9,10), A2:A13<=DATE(2026,9,30))
2026/09/12 西 K-04 ノート A4 30 6000
2026/09/15 東 K-01 USBケーブル 5 5000
2026/09/18 北 K-02 モニター 24型 1 22000
2026/09/22 東 K-02 モニター 24型 1 22000
2026/09/25 西 K-05 デスクトップpc 1 120000
開始日と終了日をセルに入力しておく形にすると、期間を変えるたびに数式を直さずに済みます。たとえば H1 に開始日、H2 に終了日を入れて、次のように書きます。
=FILTER(A2:F13, A2:A13>=H1, A2:A13<=H2)
A列の日付が文字列として入力されていると、日付との大小比較が意図どおりになりません。 A列の表示形式を「日付」にそろえ、値が日付として入力されているかを先に確かめておくと安心です。
行だけでなく列も絞る
FILTER は一度に行か列のどちらかだけを絞る関数です。ヘルプでは、行と列の両方を絞るには、FILTER の戻り値をもう1つの FILTER の範囲として使うと案内されています。内側で行を絞り、外側で「残す列は TRUE、外す列は FALSE」を横に並べて指定します。
=FILTER(FILTER(A2:F13, B2:B13="西"), {TRUE,FALSE,FALSE,TRUE,FALSE,TRUE})
2026/09/01 USBケーブル 10000
2026/09/12 ノート A4 6000
2026/09/25 デスクトップpc 120000
{TRUE,FALSE,FALSE,TRUE,FALSE,TRUE} は、A〜F列の6列に対応しています。中かっこの中のカンマは「横に並べる」、セミコロンは「縦に並べる」という意味です。ここでは日付・商品名・金額の3列だけを残しています。
UNIQUE・SORT と組み合わせる
UNIQUE:重複をなくす
UNIQUE(範囲, [列の比較], [重複なし])
| 引数 | 内容 |
|---|---|
| 範囲 | 重複を取り除く対象のデータ |
| 列の比較 | 省略可(既定は FALSE)。TRUE にすると列どうしを比べる |
| 重複なし | 省略可(既定は FALSE)。TRUE にすると、1回しか出てこない行だけを返す |
結果は、元のデータに出てきた順に並びます。
=UNIQUE(B2:B13)
東
西
南
北
複数の列を範囲にすると、行全体が同じものを1つにまとめます。 商品コードと商品名の対応表を作るときに便利です。
=UNIQUE(C2:D13)
K-02 モニター 24型
K-01 USBケーブル
K-04 ノート A4
K-03 ノートPC 14型
K-05 デスクトップpc
第3引数を TRUE にすると、1回しか出てこない値だけが残ります。=UNIQUE(C2:C13, FALSE, TRUE) をサンプル表に当てはめると、1行しかない「K-05」だけになります。
SORT:並べ替える
SORT(範囲, 並べ替える列, 昇順, [並べ替える列2, 昇順2, ...])
| 引数 | 内容 |
|---|---|
| 範囲 | 並べ替えるデータ |
| 並べ替える列 | 範囲の中の列番号(左から 1, 2, 3…)、または範囲の外にある同じ行数の1列 |
| 昇順 | TRUE で昇順(小さい順)、FALSE で降順(大きい順) |
東の行を、金額(範囲の6列目)の大きい順に並べます。
=SORT(FILTER(A2:F13, B2:B13="東"), 6, FALSE)
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/10/01 東 K-03 ノートPC 14型 1 98000
2026/08/28 東 K-02 モニター 24型 2 44000
2026/09/22 東 K-02 モニター 24型 1 22000
2026/09/15 東 K-01 USBケーブル 5 5000
2026/09/03 東 K-04 ノート A4 20 4000
並べ替えのキーは2組以上書けます。商品コード(3列目)の昇順、同じコードの中では日付(1列目)の新しい順に並べる例です。
=SORT(FILTER(A2:F13, F2:F13>=40000), 3, TRUE, 1, FALSE)
2026/08/28 東 K-02 モニター 24型 2 44000
2026/10/01 東 K-03 ノートPC 14型 1 98000
2026/09/08 東 K-03 ノートPC 14型 2 196000
2026/09/05 南 K-03 ノートPC 14型 1 98000
2026/09/25 西 K-05 デスクトップpc 1 120000
入れ子の順番で結果が変わる
「東で扱った商品コードの一覧」を、3通りの入れ子で作って比べます。
パターン1:UNIQUE(FILTER(...)) 出てきた順
=UNIQUE(FILTER(C2:C13, B2:B13="東"))
K-02
K-04
K-03
K-01
パターン2:SORT(UNIQUE(FILTER(...))) コードの順
=SORT(UNIQUE(FILTER(C2:C13, B2:B13="東")), 1, TRUE)
K-01
K-02
K-03
K-04
パターン3:UNIQUE(SORT(FILTER(...))) 金額の大きい順
=UNIQUE(SORT(FILTER(C2:C13, B2:B13="東"), FILTER(F2:F13, B2:B13="東"), FALSE))
K-03
K-02
K-01
K-04
パターン3は、先に金額の大きい順に並べてから重複を取り除いています。UNIQUE は出てきた順を保つので、「いちばん金額の大きい行が上にある商品コードから順に」並びます。SORT の「並べ替える列」に、同じ条件で絞った金額の列を渡しているのがポイントです。
| 入れ子の形 | 処理の順番 | 結果の並び | 向いている用途 |
|---|---|---|---|
UNIQUE(FILTER()) |
絞る → 重複をなくす | 元の表に出てきた順 | 入力順のまま一覧にしたい |
SORT(UNIQUE(FILTER())) |
絞る → 重複をなくす → 並べる | 値そのものの順(コード順など) | プルダウン用の一覧、名前順の一覧 |
UNIQUE(SORT(FILTER())) |
絞る → 並べる → 重複をなくす | 別の列(金額・日付など)の順 | 金額の大きい順、新しい順の一覧 |
FILTER(UNIQUE(), 条件) |
重複をなくす → 絞る | 条件の長さが合わなくなる | 下の説明を参照 |
FILTER をいちばん内側に置くのが基本です。 =FILTER(UNIQUE(C2:C13), B2:B13="東") のように UNIQUE を先にすると、範囲は重複をなくした5行、条件は12行となり、「条件は範囲と同じ長さにする」というルールに合わなくなります。内側から「絞る → 並べる・重複をなくす」の順に読める形にしておくと、あとで見直しやすくなります。
Excel版FILTER関数との違い
Excel にも同じ名前の FILTER 関数がありますが、引数の意味が一部異なります。両方を使う人は、次の対応表を手元に置いておくと移し替えが楽になります。
| 項目 | Google スプレッドシート | Excel |
|---|---|---|
| FILTER の構文 | FILTER(範囲, 条件1, [条件2, ...]) |
FILTER(配列, 含む, [空の場合]) |
| 第3引数の意味 | 2つ目の条件(ANDで追加) | 一致する行がないときに返す値 |
| ANDの書き方 | カンマで並べる、または * |
* でつなぐ |
| ORの書き方 | + でつなぐ |
+ でつなぐ |
| 一致する行がないとき | #N/A を返す |
第3引数を省略していると #CALC! を返す |
| 「該当なし」の表示 | IFNA(FILTER(...), "該当なし") |
第3引数に "該当なし" を書く |
| SORT の構文 | SORT(範囲, 並べ替える列, 昇順, ...) |
SORT(配列, [並べ替えインデックス], [並べ替え順序], [並べ替え基準]) |
| SORT の昇順・降順 | TRUE / FALSE | 1(昇順・既定)/ -1(降順) |
| UNIQUE の構文 | UNIQUE(範囲, [列の比較], [重複なし]) |
UNIQUE(配列, [by_col], [exactly_once]) |
同じ抽出を、それぞれの書き方で並べます。
Google スプレッドシート
=FILTER(A2:F13, B2:B13="東", F2:F13>=40000)
=IFNA(FILTER(A2:F13, B2:B13="中央"), "該当なし")
=SORT(FILTER(A2:F13, B2:B13="東"), 6, FALSE)
Excel
=FILTER(A2:F13, (B2:B13="東")*(F2:F13>=40000))
=FILTER(A2:F13, B2:B13="中央", "該当なし")
=SORT(FILTER(A2:F13, B2:B13="東"), 6, -1)
いちばん取り違えやすいのは第3引数です。 Excel の感覚で =FILTER(A2:F13, B2:B13="中央", "該当なし") をスプレッドシートに書くと、"該当なし" は2つ目の条件として扱われます。逆に、スプレッドシートのカンマ区切りのAND条件を Excel に持っていくと、2つ目の条件が「空の場合」の値として扱われます。* でつなぐAND と + でつなぐOR は両方で同じ書き方なので、行き来する表ではこの書き方にそろえておくと移しやすくなります。
一致する行がない場合の、スプレッドシートでの表示は次のとおりです。
=IFNA(FILTER(A2:F13, B2:B13="中央"), "該当なし")
該当なし
IFNA は #N/A のときだけ代わりの値を返します。IFERROR でも同じ表示にできますが、IFERROR はすべてのエラーを置き換えるため、数式の書き間違いに気づきにくくなります。「一致なし」だけを置き換えたいときは IFNA が向いています。
うまく抽出できないときの原因別早見表
| 起きること | 原因 | 直し方 |
|---|---|---|
#N/A が表示される |
条件を満たす行が1つもない | 条件の値を確かめる。表示を変えるなら IFNA(FILTER(...), "該当なし") |
ORのつもりが #N/A になる |
ORの条件をカンマで並べた(ANDになっている) | (条件A)+(条件B) に直す |
| 抽出結果が表示されない | 条件の行数が範囲と違う(例:範囲は 2〜13行、条件は 2〜12行) | 範囲と条件の開始行・終了行をそろえる |
| UNIQUE と組み合わせたら抽出結果が表示されない | UNIQUE を内側にして行数が変わった | FILTER を内側に、UNIQUE・SORT を外側にする |
| 行と列を同時に絞れない | 1つの FILTER に行の条件と列の条件を混ぜた | FILTER を2重にして、内側で行、外側で列を絞る |
#VALUE! が表示される(SEARCH を使用) |
SEARCH の引数の順番が逆 | SEARCH(探す文字列, 探される側のテキスト) の順にする |
| 数値の列で REGEXMATCH がうまく動かない | REGEXMATCH はテキスト専用 | TEXT(列, "0") でテキストに変換してから渡す |
| 一致するはずの行が出てこない | 値の末尾に空白がある、全角と半角が混ざっている | 元の値を整える。ヘルプでも、末尾のスペースなど隠れたテキストの確認が案内されている |
| UNIQUE で同じ値が2つ残る | 見た目は同じでも、末尾の空白や数値の書式が違う | 空白を取り除き、数値の書式をそろえる |
| 大文字と小文字で結果が変わる | REGEXMATCH は大文字小文字を区別する | ISNUMBER(SEARCH(...)) に替える |
まず「条件を1つだけにして結果が出るか」を確かめ、条件を1つずつ足していくと、どの条件で行が消えているかを早く見つけられます。
よくある質問
Q. FILTER関数とフィルタ機能(メニューのフィルタ)は何が違いますか? A. メニューのフィルタは、元の表の行をその場で一時的に隠す機能です。FILTER関数は、条件に合う行を別の場所に取り出して並べます。元の表をそのままにして、条件別の一覧を別シートに作りたいときは FILTER関数が向いています。
Q. 条件に合う件数だけ知りたいときはどうしますか?
A. 1つの条件なら COUNTIF(範囲, 条件) で数えられます。FILTER の結果の行数を数える方法もありますが、一致する行がないときに #N/A になるため、件数だけなら COUNTIF のほうが扱いやすいです。
Q. QUERY関数とはどう使い分けますか? A. 条件で行を取り出し、並べ替えや重複の整理をするところまでなら、FILTER・SORT・UNIQUE の組み合わせで足ります。グループごとの合計や平均まで1つの数式で出したいときは、QUERY関数が候補になります。
まとめ
- FILTER関数は
FILTER(範囲, 条件1, [条件2, ...])。条件が TRUE の行だけを、元の順のまま取り出す - ANDはカンマか
*、ORは+、除外は NOT。*や+を使うときは条件を1つずつかっこで囲む - 部分一致は REGEXMATCH(大文字小文字を区別)か ISNUMBER(SEARCH())(区別しない)を条件に入れる
- 期間指定は、開始日以上と終了日以下の2条件をカンマで並べる
- FILTER を内側、UNIQUE・SORT を外側に置く。UNIQUE と SORT の順番で、結果の並びが変わる
- Excel の FILTER は第3引数が「空の場合」。スプレッドシートでは IFNA で包んで「該当なし」を表示する
- 一致する行がないと
#N/A。条件の行数は範囲とそろえる
参考・出典
- Google ドキュメント エディタ ヘルプ「FILTER 関数」:https://support.google.com/docs/answer/3093197?hl=ja
- Google ドキュメント エディタ ヘルプ「UNIQUE 関数」:https://support.google.com/docs/answer/10522653?hl=ja
- Google ドキュメント エディタ ヘルプ「SORT 関数」:https://support.google.com/docs/answer/3093150?hl=ja
- Google ドキュメント エディタ ヘルプ「REGEXMATCH」:https://support.google.com/docs/answer/3098292?hl=ja
- Google ドキュメント エディタ ヘルプ「SEARCH」:https://support.google.com/docs/answer/3094154?hl=ja
- Google ドキュメント エディタ ヘルプ「IFNA」:https://support.google.com/docs/answer/9365944?hl=ja
- Google ドキュメント エディタ ヘルプ「Google スプレッドシートで配列を使用する」:https://support.google.com/docs/answer/6208276?hl=ja
- Microsoft サポート「FILTER 関数」「SORT 関数」「UNIQUE 関数」:https://support.microsoft.com/ja-jp/office/filter-関数-f4f7cb66-82eb-4767-8f7c-4877ad80c759
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「スプレッドシートFILTER関数の使い方|複数条件とUNIQUE・SORT」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。