どうもYnek0です。
今回は、Googleスプレッドシートの中でもすごく便利な「フィルター関数」についてお話しします。
エクセルにはない機能なので、ぜひマスターしてスプレッドシートマスターになっちゃいましょう!
フィルター関数って何?
フィルター関数(FILTER)は、山ほどあるデータから欲しいものだけを取り出せる超便利な機能なんです。
例えば:
- 売上データから100万円以上の大型取引だけをピックアップ
- 社員リストから30歳以上のベテランさんだけを抽出
- 商品リストから在庫があるものだけをリストアップ
こんな感じで、いろんな場面で使えちゃうんですよ。
フィルター関数の基本的な書き方
フィルター関数の基本的な書き方はこんな感じです:
=FILTER(表示範囲, 条件範囲1 条件1, [条件範囲2 条件2], ...)
ちょっと難しそうに見えるかもしれませんが、一つずつ説明していきますね。
- 表示範囲: 抽出したいデータが入ってる範囲のこと。例えば A1:D100 みたいな感じ。
- 条件範囲1: どの列(または行)に条件を当てはめるかを指定します。
- 条件1: 具体的にどんな条件で抽出するか。例えば ">100"(100より大きい)とか。
- [条件範囲2 条件2]: 複数の条件を付けたい時に使います。なくてもOKです。
条件式で使う記号の意味
条件式で使う記号について、分かりやすく説明しますね。
- = (イコール):ピッタリ同じ
例:A1:A10 = "りんご"
(りんごとピッタリ同じものを取り出す) - > (大なり):より大きい
例:B1:B10 > 100
(100より大きい数字を取り出す) - < (小なり):より小さい
例:C1:C10 < 50
(50より小さい数字を取り出す) - >= (以上):その数字も含めてそれ以上
例:D1:D10 >= 18
(18歳以上を取り出す) - <= (以下):その数字も含めてそれ以下
例:E1:E10 <= 65
(65歳以下を取り出す) - <> (不等号):これじゃないもの
例:F1:F10 <> "不合格"
(不合格以外のものを取り出す)
具体例で見てみよう!
実際の使い方を見てみましょう。
例1:100点満点のテスト結果から80点以上の優秀な学生さんを抽出
=FILTER(A1:B20, B1:B20 >= 80)
この場合:
- A1:B20 が表示範囲(A列に名前、B列に点数が入ってるとします)
- B1:B20 が条件範囲
- >=80 が条件1(80点以上)
例2:商品リストから手頃な価格(1000円以上5000円以下)のものを抽出
=FILTER(A1:C100, B1:B100 >= 1000, B1:B100 <= 5000)
ここでは:
- A1:C100 が表示範囲(A列に商品名、B列に価格、C列に在庫数など)
- B1:B100 が条件範囲
- >=1000 が条件1(1000円以上)
- <=5000 が条件2(5000円以下)
フィルター関数のいいところ
- データの見える化が簡単: 必要な情報だけをサクッと取り出せます。
- リアルタイムで更新: 元データが変わると、フィルター結果も自動で更新されちゃいます。
- 複雑な条件も設定できる: ANDやORを使って、細かい条件指定ができるんです。
- データ分析が楽チン: 大量のデータから必要な情報だけをササッと抽出できます。
- レポート作成が早くなる: 条件に合うデータを自動で抽出できるから、レポート作成が速くなります。
ちょっと難しいテクニック
AND条件の使い方
複数の条件を全部満たすデータを抽出したい時は、カンマで区切って条件を追加します。
=FILTER(A1:C100, B1:B100 > 1000, C1:C100 = "在庫あり")
この例だと、1000円より高くて、しかも在庫がある商品を抽出しています。
OR条件の使い方
どれか一つの条件を満たすデータを抽出したい時は、+(プラス)記号を使います。
=FILTER(A1:C100, (B1:B100 = "赤") + (B1:B100 = "青"))
この例だと、赤か青の商品を抽出しています。
文字列の一部が一致するものを探す
文字列の一部が一致するデータを抽出したい時は、SEARCH関数と組み合わせます。
=FILTER(A1:B100, SEARCH("株式会社", A1:A100))
この例だと、A列に「株式会社」という文字が含まれる行を抽出しています。
FILTER関数と他の関数を使った応用
FILTER関数は他にも用意されている様々な関数と連携させる事によりさらに便利に使用する事が出来ます。
IMPORTRANGE関数とFILTER関数でデータを選定して表示できる。
スプレッドシート関数に別のスプレッドシートからデータを持ってくる時に使用する関数である
IMPORTRANGE関数という関数があります。
その関数に関しましては専用の記事を用意しましたのでそちらを読んで頂けると
嬉しいです。
要約すると他のスプレッドシートから指定した範囲のデータを映し出してくれる関数です。
この関数とFILTER関数を連携させる事により別のスプレッドシートから呼び出したデータをFILTER関数を使って表示するデータを制御することができるのですよ。
例えば以下の様な記述式にすることで別スプレッドシートでそれが可能です。
=FILTER(IMPORTRANGE(省略),“テスト” = IMPORTRANGE(省略))
IMPORTRANGE関数とFILTER関数とUNIQUE関数で重複を無くし選定して表示できる。
UNIQUE関数については以下記事をご参照下さい。
要約すると重複を削除する関数です。
## 別シートから参照したデータをフィルター条件に当てはまり、重複を削除したデータを抽出
=UNIQUE(FILTER(IMPORTRANGE(省略),“テスト” = IMPORTRANGE(省略)))
INDIRECT関数とFILTER関数を使い範囲指定をセル入力にする事も可能
INDIRECT関数においては以下記事を参照下さい
要約するとセルに入力したセル参照の文字列をセル参照と認識させる事の出来る関数です。
FILTER関数とINDIRECT関数を利用する事でセルでの範囲指定を行う事ができます。
## FILTER関数の範囲のみをINDIRECT関数を利用
=FILTER(INDIRECT(C5),INDIRECT(C5) = "a")
INDIRECT関数とFILTER関数を利用した例2でもご紹介しておりますが、条件の値ももちろんセル参照可能です。
しかしこのセル参照にもINDIRECT関数を使用するとエラーになるので注意して下さい。
INDIRECT関数とFILTER関数とUNIQUE関数を使い、重複削除も可能
UNIQUE関数をFILTER関数の上に重ねて重複を削除することもできます。
FILTER関数を設定すると出てくるエラー
FILTER の範囲サイズが一致しません。
実際に出てくるエラー文言は以下の通りです。
FILTER の範囲サイズが一致しません。行数を ○、列数を ○ にしてください。実際の行数は ○、列数は ○ です。
このエラーについてはFILTER関数を利用する上で良くあるエラーとなります。
最初の指定した範囲と条件で指定した範囲の不一致によって出てきます。
つまり、A1:A10の範囲指定したのに条件指定でB:1:B11 = "Ynek0"の様に指定しているけど、B11ってなんやねん。
範囲指定にA11入ってないやん。
と言われている感じです。
解決策としては指定した範囲と条件指定で指定した範囲を同じ範囲にする様に修正して下さい。
FILTER の範囲は単一行か単一列にしてください
このエラーについては条件指定の範囲が複数列複数行で範囲指定していしている場合に発生します。
対処方法はエラーの文面の通り条件を単一行または単一列に指定する事で解消されます。
どうしても複数条件にしたい場合は、条件2で指定すれば問題ないです。
よくあるエラーと対処法
- #N/A エラー: 条件に合うデータが見つからない時に出ます。
対処法:IFERROR関数と組み合わせて、エラーの時のメッセージを設定しちゃいましょう。
=IFERROR(FILTER(A1:B10, B1:B10 > 100), "該当データないよ~")
- #VALUE! エラー: 条件範囲と表示範囲のサイズが合ってない時に出ます。
対処法:範囲をもう一度確認して直しましょう。条件範囲は表示範囲と同じ行数じゃないとダメです。 - #REF! エラー: 参照しているセルが存在しない時に出ます。
対処法:範囲指定を確認して、正しいセル範囲を指定してください。
まとめ
フィルター関数は、大量のデータを扱う時にすごく便利なツールなんです。
基本を押さえれば、複雑な条件でもデータをサクッと抽出できるようになりますよ。初心者さんは、まず簡単な条件から始めて、少しずつ複雑な条件に挑戦してみてくださいね。
練習を重ねると、フィルター関数の使い方がどんどん上手くなっていきます。ぜひ実際に使ってみて、スプレッドシートでの作業をもっと楽しく、効率的にしちゃいましょう!
最後に、フィルター関数の使い方に慣れてきたら、QUERY関数やVLOOKUP関数なんかも学んでみるのがおすすめです。Googleスプレッドシートの世界はとっても奥が深くて、学べば学ぶほど仕事が楽になっていきますよ!さあ、フィルター関数マスターへの道、一緒に歩んでいきましょう!