QUERY関数は、Googleスプレッドシートでデータベースのようにデータを操作できる強力な関数です。しかし、その構文が複雑で、使いこなせずに困っていませんか。特にSELECT文を使った列の抽出や並べ替えは、基本的な操作ですが、覚えると作業効率が劇的に向上します。この記事では、QUERY関数のSELECT文の書き方と、ORDER BYを使った並べ替えの方法をわかりやすく解説します。
【要点】QUERY関数のSELECT文とORDER BY句の基本
- 基本構文:=QUERY(データ, “SELECT Col1, Col2”, 1): データ範囲とSELECT文の文字列を指定し、列ラベルを含めるか指定します。
- 列はCol1, Col2形式で指定: SELECT句ではA列ではなくCol1のように範囲内の列番号で指定します。列名が日本語の場合は、そのまま「列名」と書くこともできます。
- ORDER BY句で並べ替え: “SELECT Col1, Col2 ORDER BY Col2 DESC” のように書くと、指定列で降順に並べ替えられます。
ADVERTISEMENT
目次
QUERY関数のSELECT文の基本
QUERY関数は、Googleスプレッドシート専用のSQLライクな関数です。SELECT文を使って特定の列だけを抽出できます。たとえば売上データから「日付」と「金額」の列だけを取り出す場合に便利です。基本構文は =QUERY(データ範囲, “SELECT 列指定”, ヘッダー行数) です。データ範囲はA1形式で指定し、第2引数はダブルクォーテーションで囲んだクエリ文字列を記述します。第3引数にはヘッダー行の数を指定します。通常は1を指定しますが、ヘッダーがない場合は0にします。
QUERY関数で列を抽出する基本手順
ここでは、実際の操作手順を説明します。サンプルデータとして、A列に「商品名」、B列に「カテゴリ」、C列に「売上」が入力されている表を想定します。
- データ範囲を確認する
抽出したいデータの範囲を確認します。たとえばA1:C100のように覚えておきます。 - 結果を表示するセルを選択する
抽出結果を出力したいセルを1つ選びます。 - QUERY関数を入力する
=QUERY(A1:C100, “SELECT Col1, Col3”, 1) と入力します。ここでCol1はA列、Col3はC列を指します。 - Enterキーで確定する
Enterを押すと、商品名と売上の列だけが表示されます。
列の指定方法には、Col1のように範囲内の列番号を使う方法と、ヘッダー行の文字列を直接使う方法があります。日本語の列名を使う場合は、ダブルクォーテーション内に列名をそのまま記述します。たとえば =QUERY(A1:C100, “SELECT ‘商品名’, ‘売上'”, 1) のように書くこともできますが、半角英数の列名の場合はCol表記が推奨されます。また、列をすべて取得したい場合はSELECT * と書きます。
ORDER BY句でデータを並べ替える手順
QUERY関数ではORDER BY句を使って結果を並べ替えられます。昇順はASC、降順はDESCを指定します。SELECT文の最後にORDER BY句を追加するだけです。
- 売上順に並べ替えるクエリを書く
=QUERY(A1:C100, “SELECT Col1, Col3 ORDER BY Col3 DESC”, 1) と入力します。これで売上の高い順に表示されます。 - 複数条件で並べ替える
「カテゴリで昇順、売上で降順」にするには、”SELECT * ORDER BY Col2 ASC, Col3 DESC” のようにカンマで区切ります。 - NULLの扱いに注意する
並べ替えの対象列に空白がある場合、QUERY関数はNULLを先頭または末尾にまとめます。これを避けたい場合は、事前にデータをクリーニングしてください。
ORDER BY句は重いデータセットでは処理に時間がかかることがあります。必要に応じてLIMIT句で表示行数を制限することもできます。たとえば “SELECT Col1, Col3 ORDER BY Col3 DESC LIMIT 10” とすると上位10件のみ表示されます。
ADVERTISEMENT
注意点とよくある失敗パターン
エラー「#VALUE!」が表示される場合
原因はクエリ文字列の構文ミスです。ダブルクォーテーションの閉じ忘れや、列名の指定ミスがないか確認します。とくに日本語列名を使う場合はシングルクォーテーションで囲む必要があります。正しくは “SELECT ‘商品名'” のように書きます。列名にスペースが含まれる場合もシングルクォーテーションが必要です。
並べ替えが思った順序にならない
データが文字列として保存されていると、数値の並べ替えが正しく行われません。たとえば「100」「20」「3」という数字を文字列として並べ替えると、「100」「20」「3」の順になります。この場合はVALUE関数を使って数値に変換するか、データの形式を事前に数値に統一します。QUERY関数内でキャストすることも可能です。たとえば “SELECT Col1, Col3 ORDER BY CAST(Col3 AS INT) DESC” のように書きます。
データ範囲に非表示行やフィルタが含まれる
QUERY関数は指定された範囲全体を対象とします。フィルタで非表示にした行も含まれるため、抽出結果に不要なデータが混ざることがあります。この場合はQUERY関数内でWHERE句を使って条件を指定します。たとえば “SELECT * WHERE Col2 = ‘食品'” のようにフィルタリングします。
QUERY関数と他の抽出方法の比較
QUERY関数とよく比較される機能にフィルタビューやFILTER関数があります。それぞれの特徴を表にまとめました。
| 機能 | 特徴 | 並べ替え | リアルタイム反映 |
|---|---|---|---|
| QUERY関数 | SQLライクな高度な抽出・集計が可能。別シート参照も簡単 | ORDER BY句で昇降順指定可 | 元データ変更で自動更新 |
| フィルタビュー | UIで簡単にフィルタ・並べ替え。一時的な表示に最適 | 列見出しクリックで昇降順 | 手動で更新するか、フィルタの再適用が必要 |
| FILTER関数 | シンプルな条件抽出に特化。結果を別範囲に出力 | 並べ替え機能はないためSORT関数と組み合わせる | 元データ変更で自動更新 |
QUERY関数は複雑な条件や集計が必要な場合に力を発揮します。一方、単純なフィルタであればフィルタビューやFILTER関数の方が簡単です。用途に応じて使い分けてください。
まとめ
QUERY関数のSELECT文を使うと、必要な列だけを抽出し、ORDER BY句で柔軟に並べ替えられることがわかりました。基本構文は =QUERY(データ範囲, “SELECT 列指定 ORDER BY 列指定 DESC”, ヘッダー行数) です。列はCol1形式か、列名をシングルクォーテーションで囲んで指定します。次に応用として、WHERE句で条件抽出したり、GROUP BYで集計する方法も試してみてください。QUERY関数を使いこなせば、スプレッドシートでのデータ分析が一段と効率的になります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
