Googleスプレッドシートでデータを抽出するとき、FILTER関数やピボットテーブルだけでは対応が難しい複雑な条件指定に悩んだことはありませんか。QUERY関数を使えば、データベースのようにSELECTやWHERE句を組み合わせて、思い通りの抽出を一発で実行できます。この記事では、QUERY関数の基本的な書き方から、複数条件の指定、日付の扱い、並び替えや件数制限まで、実務でよく使う構文をステップごとに解説します。これを読めば、QUERY関数を使いこなせるようになり、スプレッドシートでのデータ加工が格段に効率的になります。
【要点】QUERY関数のSELECT WHERE構文をマスターする3つのポイント
- =QUERY(範囲, “SELECT 列A, 列B WHERE 条件”, 1) の基本形: データ範囲とSQLライクな文字列を引数に指定して、必要な列だけ絞り込みます。
- WHERE句で複数条件を指定する方法: ANDやORを使って複数の条件を組み合わせることで、柔軟な抽出が可能になります。
- 日付やテキストの比較演算子: 日付はシリアル値に変換、テキストはシングルクォーテーションで囲むなど、データ型に応じた正しい記述が必要です。
ADVERTISEMENT
目次
QUERY関数の基本: なぜSELECT WHERE構文が便利なのか
QUERY関数は、Googleスプレッドシートに組み込まれたSQLのようなデータ操作ツールです。第一引数にデータ範囲、第二引数にクエリ文字列を指定することで、フィルタリングや集計、並び替えなどを一つの関数で実現します。特にSELECTとWHEREを組み合わせた構文は、必要な列だけを指定し、特定の条件に合致する行だけを抽出できるため、大量データからの効率的な情報取得に欠かせません。QUERY関数は、データベースに詳しくない初心者でも、シンプルな構文を覚えるだけで高度なデータ操作が可能になる点が最大の魅力です。
QUERY関数でSELECT WHERE構文を書く基本手順
ここでは、QUERY関数の基本形から、実際にWHERE句を使って条件抽出するまでの手順を説明します。サンプルデータとして、A列に商品名、B列にカテゴリ、C列に売上金額が入力された表を使います。
基本のSELECT WHERE構文を入力する
- 結果を表示するセルを選び、QUERY関数を入力する
最初に、抽出結果を表示したいセルをクリックします。そこに「=QUERY(」と入力し始めます。 - 第一引数にデータ範囲を指定する
抽出元のデータ範囲を選択します。例えば、シート名が「Sheet1」でA1からC100までデータがある場合、「Sheet1!A1:C100」と指定します。 - 第二引数にクエリ文字列を二重引用符で囲んで書く
ダブルクォーテーションの中に、SELECTやWHEREを含むSQL風の文字列を記述します。例えば、「SELECT A, C WHERE B = ‘食品’」のように書きます。列はA、B、Cのアルファベットで指定します。 - 第三引数に1(見出し行あり)を指定する
データ範囲の1行目が見出し行の場合は、第三引数に1を入力します。見出しがない場合は0にします。これで数式が完成します。
複数条件をANDやORで組み合わせる
- ANDですべての条件を満たす行を抽出する
WHERE句の中で複数の条件をANDで連結します。例:「SELECT A, C WHERE B = ‘食品’ AND C > 1000」と書けば、カテゴリが食品で売上が1000より大きい行だけを取得します。 - ORでいずれかの条件を満たす行を抽出する
条件をORでつなぐと、どれか一つでも当てはまる行が抽出されます。例:「SELECT A, C WHERE B = ‘食品’ OR B = ‘飲料’」と書けば、食品または飲料のカテゴリに属する行が取得できます。 - ANDとORを併用するときはカッコで優先順位を指定する
複雑な条件では、カッコを使ってグループ化します。例:「SELECT A, C WHERE (B = ‘食品’ OR B = ‘飲料’) AND C > 500」とすれば、食品か飲料でかつ売上が500超のデータを抽出できます。
日付やテキストの条件を正しく指定する
- 日付を条件にするときはDATE関数またはシリアル値を使う
WHERE句で日付を比較するには、クエリ文字列の中でDATE’yyyy-MM-dd’と書くか、TEXT関数でシリアル値に変換します。例:「WHERE A >= DATE’2024-01-01’」と指定します。 - テキストを条件にするときはシングルクォーテーションで囲む
WHERE句内でテキスト値を指定する際は、クエリ文字列の中でシングルクォーテーションで囲みます。例:「WHERE B = ‘食品’」のように書きます。数値はそのまま記述します。 - ワイルドカードを使った部分一致検索
部分一致には「contains」演算子を使います。例:「WHERE B contains ‘食’」とすれば、カテゴリに「食」を含む行すべてが抽出されます。前方一致や後方一致はサポートされていないため、代替としてFILTER関数などを使う必要があります。
ORDER BYやLIMITを併用して抽出結果を整える
- ORDER BYで抽出結果を並び替える
SELECT句の後に「ORDER BY 列名 ASC(昇順)または DESC(降順)」を追加します。例:「SELECT A, C WHERE B = ‘食品’ ORDER BY C DESC」とすれば、食品の中で売上の高い順に並びます。 - LIMITで表示する行数を制限する
クエリ文字列の末尾に「LIMIT 数値」を付けると、抽出する行数の上限を指定できます。例:「SELECT A, C WHERE B = ‘食品’ ORDER BY C DESC LIMIT 5」と書けば、食品の売上トップ5だけを表示します。 - LABEL句で列の表示名を変更する
SELECT句中で「列名 LABEL 新しい名前」を使うと、結果の見出しを自由に変更できます。例:「SELECT A, SUM(C) WHERE B = ‘食品’ GROUP BY A LABEL SUM(C) ‘売上合計’」のように使います。
QUERY関数使用時の注意点とよくあるミス
クエリ文字列内で列名はアルファベットで指定する
QUERY関数のクエリ文字列では、列をA、B、C…のようにアルファベットで参照します。列の見出し名(例えば「商品名」)を直接使うことはできません。ただし、第三引数に1を指定している場合、クエリ文字列の中で「Col1」「Col2」などの記法も使えますが、基本的にはアルファベット表記がシンプルです。
日付や数値の比較にはデータ型を意識する
WHERE句で日付を比較するときは、日付データが正しく認識されるように、DATE’yyyy-MM-dd’の形式で記述します。また、数値はカンマ区切りで入力しないように注意します。たとえば「1000」と書くべきところを「1,000」と書くと、文字列として扱われて比較が正しく行われません。数値は数値として、テキストは引用符で囲むというルールを守りましょう。
データ範囲に空白セルや異種データが混在するとエラーになる
QUERY関数はデータ範囲内の型が統一されていることを前提に動作します。同じ列に数値と文字列が混在している場合、期待した結果が得られないことがあります。また、空白セルがあると、その列のデータ型が自動的に「文字列」と解釈されることがあり、数値演算に影響します。事前にデータを整えておくか、IFERROR関数でエラーを回避します。
ADVERTISEMENT
QUERY関数とFILTER関数の違い
| 項目 | QUERY関数 | FILTER関数 |
|---|---|---|
| 構文の複雑さ | SQLライクでやや複雑だが、一度覚えれば強力 | シンプルで直感的、初心者に優しい |
| 複数条件の指定 | AND/ORを自由に組み合わせ可能、カッコで優先順位も指定できる | 条件を引数で並べられるが、複雑な論理は苦手 |
| 並び替え・集計 | ORDER BY、GROUP BY、LIMITなどを一発で実行できる | 並び替えは別途SORT関数が必要、集計はできない |
| パフォーマンス | 大量データでも高速に動作するが、複雑なクエリは負荷がかかる | データ量が多くなると遅くなる場合がある |
まとめ
QUERY関数のSELECT WHERE構文を使いこなすことで、Googleスプレッドシート上でデータベースのような柔軟な抽出が可能になります。基本的な構文を覚えれば、複数条件の指定、日付の扱い、並び替えや件数制限まで一つの関数で実現できるため、作業効率が大幅に向上します。次に応用として、GROUP BYを使った集計やLABEL句での見出し変更も試してみてください。実際のデータで練習すれば、すぐにQUERY関数の便利さを実感できるでしょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
