スプレッドシートにはデータを抽出できる「フィルター機能」があり、基本的なデータの絞り込みであれば、この機能を使用するだけで十分便利でしょう。
しかし、フィルター機能を使いこなすうち「もっと細かい設定で絞り込みができたらいいのに」と思うことがあるかもしれません。
そこで、本記事ではFILTER(フィルター)関数を使用し、AND検索やOR検索など高度にデータを抽出する方法を解説します。
効率的にデータを検索したい、部分一致で情報を見つけたい方、ぜひお確かめください。
FILTER関数の使い方
スプレッドシートのデータメニューにある「フィルター」機能は、とても便利な機能です。しかし、複雑な表や大量のデータを扱っていると、もっとかんたんにデータを絞り込みたいと思うことでしょう。
スプレッドシートには指定の条件でデータを抽出できる「FILTER関数」という関数があります。それではFILTER関数について詳しく確認していきます。
FILTER関数とは
FILTER関数は次のように範囲と条件を指定して、データを絞り込む機能。たとえば作成した表データのなかで、「A棟の店舗で取り扱う商品のみ抜粋したい」というときは以下のイメージで範囲と条件を指定します。
- 範囲:A1:B15
- 条件:A1:A15=”A棟”
FILTER関数の記述例
FILTER関数における記述式の基本的は次のとおりです。
※文字列を指定するときは記述例「”A棟”」のように、必ず半角の””(ダブルクォーテーション)で文字列を囲んでください。
- =FILTER(範囲, 条件1, [条件2, …])
FILTER関数で絞り込む
ここでは実例を交え、FILTER関数でデータを絞り込む操作をお伝えします。実際の記述式とデータ抽出後の画面周りを公開しますので、よろしければぜひ練習として同じ表を作成してみてください。
FILTER関数への理解を深めるためにも、作成した表・関数を試しながらFILTER関数の動作を確認できるとよいでしょう。
条件1つで絞り込む
FILTER関数を使用して、「1つの条件で絞り込む」場合の記述式と、具体例を紹介します。まずは以下の記述式を参考にしてください。
※文字列を指定するときは記述例のように、必ず半角の””(ダブルクォーテーション)で文字列を囲んでください。
- =FILTER(G1:I14,G1:G14=”A棟”)
ここでは参照範囲を「G1:I14」として、「G1:G14」の範囲から「A棟」を抽出する条件を指定しています。上記記述の結果、以下の画像では「A棟」を抽出した結果が呼び出されています。
複数条件で絞り込む
FILTER関数を使用して、「複数条件で絞り込む」操作や具体例を解説していきます。ここではAND検索・OR検索・NOT検索・SEARCHの使い方を取り挙げます。
AND検索
AND検索とは「いずれの条件にも合致する」ように検索するという意味です。
今回は「A棟」の取扱商品から「替え芯」のデータのみ抽出してみましょう。
記述式と入力結果の画像は、次の内容を確認してください。※文字列を指定するときは記述例のように、必ず半角の””(ダブルクォーテーション)で文字列を囲んでください。
- =FILTER(G1:I14,G1:G14=”A棟”,H1:H14=”替え芯”)
OR検索
OR検索とは「どちらかの条件に合致する」設定で検索するということ。今回は「A棟である」または「シャーペンである」のどちらかに該当する条件で、データを抽出してみましょう。
なお、Excelなどで使用する関数と異なり「+(半角のプラス)」マークを使用して、OR検索の条件をつなぐ記述式になります。記述式と入力結果の画像は、次の内容を確認してください。
※文字列を指定するときは記述例のように、必ず半角の””(ダブルクォーテーション)で文字列を囲んでください。
- =FILTER(G1:I14,(G1:G14=”A棟”)+(H1:H14=”シャーペン”))
NOT検索
NOT検索とは「~ではない」条件を検索すること。今回は「A棟ではない」条件でデータを抽出してみます。
記述には否定の「NOT」の文字が入りますが、記述式と入力結果の画像は、次の内容を確認してください。
※文字列を指定するときは記述例のように、必ず半角の””(ダブルクォーテーション)で文字列を囲んでください。
- =FILTER(G1:I14,NOT(G1:G14=”A棟”))
SEARCH
SEARCHは「部分的に一致する文字列」を検索する機能。今回は「ペン」を含む条件でデータを抽出してみます。
記述には検索の「SEARCH」の文字が入りますが、記述式と入力結果の画像は、次の内容を確認してください。
※文字列を指定するときは記述例のように、必ず半角の””(ダブルクォーテーション)で文字列を囲んでください。
- =FILTER(G1:I14,SEARCH(“ペン”,H1:H14))
FILTER関数が使えないときは
エラーメッセージが表示されるなどFILTER関数が実行できないときは、こちらの内容を確かめてみてください。
エラーでFILTER関数が使えない「FILTERの範囲サイズが一致しません」
FILTER関数を使おうとしてエラーが発生するとき、次のメッセージが表示されることがあります。
「FILTERの範囲サイズが一致しません。行数を○○、列数を1にしてください。実際の行数は○○、列数は×です。」
このエラーは以下のように、指定した範囲が「正しい表の範囲」をオーバーしているときに表示されます。表の選択範囲が正しいか確認してください。
- 正⇒A1:A15
- 誤⇒A1:A16
エラーでFILTER関数が使えない「FILTERの範囲は単一行か単一列にしてください」
FILTER関数を使おうとしてエラーが発生するとき、次のメッセージが表示されることがあります。「FILTERの範囲は単一行か単一列にしてください。」
このエラーは以下のように、条件で指定する「列・行を複数選択している場合」に表示されます。列・行の選択範囲が正しいかを確認してください。
- 正⇒A1:A15
- 誤⇒A1:B15
エラーでFILTER関数が使えない「その他のエラー」
FILTER関数を使おうとしてエラーが発生するとき、以下のような複数のメッセージが表示されることがあります。
- 配列結果は〇〇(セル名)のデータを上書きするため、展開されませんでした。
- FILTERの計算に一致するものはありません。
FILTER関数を入力するとデータの抽出結果が表示されますが、この「データの抽出結果」の範囲をコピー&ペーストなどで移動すると当該エラーが生じます。このエラーを回避するには、以下いずれかの方法をお試しください。
- 最初に範囲を指定するとき、列や行を完全固定する※数式で行や列を固定したいときは、行・列の前に「$」マークを付ける(セルの指定例:$A$1、$A1、A$1等)
- データの抽出範囲をドラッグし、範囲内のデータを削除して、はじめからFILTER関数を入力し直す
当サイトではスプレッドシートやそのほかのアプリについて、お役立ち記事を公開しています。あわせてこちらもお確かめください!
Googleスプレッドシートで特定のセルやシートを編集させないように保護する方法 – OneChat Blog