- 作成日 : 2025年9月17日
スプレッドシートのQUERY関数とは?基本の使い方から実践的な利用シーンまで解説
Googleスプレッドシートで大量のデータを扱う際、必要な情報だけを抽出したり、条件に合わせて並び替えたりする作業は日常的に発生します。そんなときに強力な味方となるのがQUERY関数です。この関数を使いこなせれば、複雑なデータ処理も簡単に実現でき、業務効率が飛躍的に向上します。
本記事では、QUERY関数の基本概念から実際の使い方、さらに実務で活用できる具体的なシーンまで、初心者の方にも分かりやすく解説していきます。データベースの知識がなくても、この記事を読めばQUERY関数を使いこなせるようになるはずです。
スプレッドシートのQuery関数とは
QUERY関数は、Googleスプレッドシートで利用できる関数で、データベースで使われるSQL(Structured Query Language)に似た文法を使ってデータを操作できる機能です。簡単に言えば、大量のデータから必要な情報だけを抽出し、整理して表示するための関数です。
参考:QUERY – Google ドキュメント エディタ ヘルプ
QUERY関数の基本構文
QUERY関数の基本的な構文は以下のようになります。
=QUERY(データ範囲, クエリ文字列, [ヘッダー行数])
データ範囲には、処理したいデータが入っているセル範囲を指定します。クエリ文字列には、どのような処理を行うかを記述します。ヘッダー行数は省略可能で、データの先頭何行がヘッダーかを指定します。
従来の関数との違い
VLOOKUP関数やFILTER関数でも条件に基づくデータ抽出ができますが、QUERY関数にはいくつかの大きな利点があります。
まず、複数の条件を組み合わせた複雑な抽出が可能です。例えば、「売上が100万円以上かつ地域が関東」といった複数条件での絞り込みが、一つの関数で実現できます。
次に、データの並び替えや集計も同時に行えます。抽出したデータを売上順に並び替えたり、地域ごとの合計を計算したりすることが、追加の関数を使わずに可能です。
さらに、必要な列だけを選択して表示できるため、元データが多くの列を持っている場合でも、見やすい形で結果を表示できます。
QUERY関数が扱えるデータ形式
QUERY関数は、表形式のデータを扱うことを前提としています。各列にはデータの種類(数値、文字列、日付など)があり、各行が一つのレコード(データの単位)を表す形式が理想的です。
データ型の認識も自動で行われます。数値として認識されたデータは計算や比較が可能になり、日付として認識されたデータは日付関数と組み合わせて使用できます。ただし、同じ列に異なるデータ型が混在していると、期待通りの結果が得られないことがあるので注意が必要です。
Google Visualization API Query Languageの特徴
QUERY関数で使用するクエリ言語は、正確にはGoogle Visualization API Query Languageと呼ばれます。SQLに似ていますが、完全に同じではありません。
主な特徴として、列の指定にA、B、Cといったアルファベットを使用する点があります。これにより、列名を覚える必要がなく、直感的に操作できます。また、日付の扱いが独特で、date ‘2024-01-01’のような形式で指定する必要があります。
文字列の比較では、基本的に大文字小文字は区別されません。WHERE句で文字列を比較する際は、この点を考慮して条件を設定する必要があります。
Query関数の基本の使い方
ここからは、実際にQUERY関数を使う方法を、段階的に解説していきます。基本的な使い方をマスターすれば、様々な応用が可能になります。
STEP1:データの準備
まず、QUERY関数で処理するデータを準備します。例として、以下のような売上データがA1:E100の範囲にあるとします。
1行目にはヘッダー(日付、商品名、地域、担当者、売上金額)があり、2行目以降に実際のデータが入っているとします。このようなシンプルな表形式のデータが、QUERY関数に最適です。
STEP2:基本的なSELECT文の使用
最も基本的な使い方は、すべてのデータを表示することです。以下の数式を入力してみましょう。
=QUERY(A1:E100, “SELECT *”, 1)
この数式では、A1:E100の範囲からすべての列(*)を選択し、1行目をヘッダーとして扱います。結果として、元データがそのまま表示されます。
特定の列だけを表示したい場合は、以下のように記述します。
=QUERY(A1:E100, “SELECT A, B, E”, 1)
これにより、A列(日付)、B列(商品名)、E列(売上金額)だけが表示されます。必要な情報だけを抽出できるので、データが見やすくなります。
STEP3:WHERE句による条件指定
データを条件で絞り込むには、WHERE句を使用します。例えば、売上金額が50万円以上のデータだけを表示する場合は以下のように記述します。
=QUERY(A1:E100, “SELECT * WHERE E >= 500000”, 1)
文字列での条件指定も可能です。地域が「関東」のデータだけを表示する場合は以下のようになります。
=QUERY(A1:E100, “SELECT * WHERE C = ‘関東'”, 1)
複数の条件を組み合わせることもできます。AND(かつ)やOR(または)を使って条件を連結します。
=QUERY(A1:E100, “SELECT * WHERE C = ‘関東’ AND E >= 500000”, 1)
STEP4:ORDER BY句によるデータの並び替え
抽出したデータを特定の順序で並び替えるには、ORDER BY句を使用します。売上金額の高い順に並び替える場合は以下のように記述します。
=QUERY(A1:E100, “SELECT * WHERE E >= 300000 ORDER BY E DESC”, 1)
DESCは降順(大きい順)を意味し、ASCまたは省略すると昇順(小さい順)になります。複数の列で並び替えることも可能です。
=QUERY(A1:E100, “SELECT * ORDER BY C, E DESC”, 1)
この例では、まず地域(C列)で並び替え、同じ地域内では売上金額(E列)の高い順に並び替えます。
STEP5:GROUP BY句とSUM関数による集計
データを集計する場合は、GROUP BY句と集計関数を組み合わせます。地域ごとの売上合計を計算する例を見てみましょう。
=QUERY(A1:E100, “SELECT C, SUM(E) GROUP BY C”, 1)
この数式では、地域(C列)でグループ化し、各地域の売上金額(E列)の合計を計算します。結果として、地域名とその地域の売上合計が表示されます。
他にも使える集計関数には、COUNT(件数)、AVG(平均)、MAX(最大値)、MIN(最小値)などがあります。
=QUERY(A1:E100, “SELECT C, COUNT(E), AVG(E) GROUP BY C”, 1)
STEP6:LIMIT句による表示件数の制限
大量のデータから上位のみを表示したい場合は、LIMIT句を使用します。売上金額の上位10件だけを表示する例です。
=QUERY(A1:E100, “SELECT * ORDER BY E DESC LIMIT 10”, 1)
この機能は、ランキング表示やダッシュボード作成時に特に便利です。
Query関数の利用シーン
QUERY関数の基本的な使い方を理解したところで、実際の業務でどのように活用できるかを具体的なシーンごとに見ていきましょう。
売上分析とレポート作成
営業部門では、日々の売上データから様々な切り口で分析を行う必要があります。QUERY関数を使えば、複雑な分析も簡単に実現できます。
例えば、月別の売上推移を把握したい場合、以下のような数式を使用します。
=QUERY(A1:E100, “SELECT MONTH(A)+1, SUM(E) WHERE YEAR(A) = 2024 GROUP BY MONTH(A)+1 ORDER BY MONTH(A)+1”, 1)
この数式では、2024年のデータを月ごとに集計し、月順に表示します。MONTH関数は0から始まるため、+1を付けて実際の月数に合わせています。
商品カテゴリー別の売上ランキングを作成することも可能です。上位5商品とその売上金額を表示する場合は、以下のように記述します。
=QUERY(A1:E100, “SELECT B, SUM(E) GROUP BY B ORDER BY SUM(E) DESC LIMIT 5”, 1)
在庫管理での活用
在庫管理システムでは、適正在庫の維持が重要です。QUERY関数を使って、在庫切れリスクの高い商品を抽出できます。
在庫数が安全在庫を下回る商品を抽出する例を考えてみましょう。商品マスタと在庫データを結合して分析する場合、以下のような活用が可能です。
=QUERY(在庫データ範囲, “SELECT 商品名列, 在庫数列 WHERE 在庫数列 < 50 ORDER BY 在庫数列”, 1)
また、長期間動きのない滞留在庫の抽出も重要です。最終入出庫日から90日以上経過した商品を表示する場合は、日付関数と組み合わせて使用します。
顧客データの分析
マーケティング部門では、顧客セグメントごとの分析が欠かせません。QUERY関数を使えば、様々な角度から顧客データを分析できます。
例えば、購入金額が上位20%の優良顧客を抽出する場合、以下のような手順で実現できます。まず顧客ごとの購入金額を集計し、その後上位顧客を抽出します。
=SORTN(
QUERY(顧客データ範囲, “SELECT 顧客ID列, SUM(購入金額列) GROUP BY 顧客ID列”, 1),
ROUNDUP(COUNTA(UNIQUE(顧客ID列範囲))*0.2), 0, 2, FALSE)
地域別の顧客分布を把握することも重要です。都道府県別の顧客数と平均購入金額を算出する場合は、以下のように記述します。
=QUERY(顧客データ範囲, “SELECT 都道府県列, COUNT(顧客ID列), AVG(購入金額列) GROUP BY 都道府県列”, 1)
プロジェクト管理での応用
プロジェクト管理においても、QUERY関数は強力なツールとなります。タスクの進捗状況を可視化したり、リソースの配分を最適化したりする際に活用できます。
期限が迫っているタスクを優先度順に表示する場合、以下のような数式を使用します。
=QUERY(タスク管理表, “SELECT タスク名列, 担当者列, 期限列 WHERE 期限列 <= date ‘” & TEXT(TODAY()+7,”yyyy-MM-dd”) & “‘ AND ステータス列 != ‘完了’ ORDER BY 期限列”, 1)
この数式では、今後7日以内に期限を迎える未完了タスクを、期限の早い順に表示します。TODAY()関数と組み合わせることで、常に最新の状況を反映できます。
人事データの集計と分析
人事部門では、従業員データの管理と分析が重要な業務です。QUERY関数を使えば、部門別の人員構成や給与分析なども簡単に行えます。
部門別の平均年齢と人数を集計する例です。
=QUERY(従業員データ, “SELECT 部門列, COUNT(従業員ID列), AVG(年齢列) GROUP BY 部門列”, 1)
勤続年数別の給与分析を行う場合は、計算フィールドを使用することもできます。現在の日付から入社日を引いて勤続年数を計算し、その結果でグループ化します。
Query関数を使いこなすための実践テクニック
ここまでQUERY関数の基本的な使い方と実践的な利用シーンを見てきましたが、さらに効果的に活用するためのテクニックをご紹介します。これらのテクニックをマスターすれば、より複雑なデータ処理も自在に行えるようになります。
動的なクエリの作成
QUERY関数の真の力は、クエリ文字列を動的に生成できる点にあります。セルの値を参照してクエリを組み立てることで、インタラクティブなダッシュボードを作成できます。
例えば、G1セルに入力された地域名でフィルタリングする場合、以下のように記述します。
=QUERY(A1:E100, “SELECT * WHERE C = ‘”&G1&”‘”, 1)
&演算子を使って文字列を連結することで、G1セルの値がクエリに組み込まれます。これにより、G1セルの値を変更するだけで、表示されるデータが自動的に切り替わります。
日付範囲での絞り込みも同様に実現できます。開始日をG1セル、終了日をG2セルに入力して、その期間のデータを抽出する場合は以下のようになります。
=QUERY(A1:E100, “SELECT * WHERE A >= date ‘”&TEXT(G1,”yyyy-mm-dd”)&”‘ AND A <= date ‘”&TEXT(G2,”yyyy-mm-dd”)&”‘”, 1)
エラー処理とデータ検証
QUERY関数を使用する際、データの不整合やクエリの記述ミスによってエラーが発生することがあります。IFERROR関数と組み合わせることで、エラー時の表示をコントロールできます。
=IFERROR(QUERY(A1:E100, “SELECT * WHERE E > 1000000”, 1), “該当するデータがありません”)
この数式では、条件に合うデータがない場合やエラーが発生した場合に、「該当するデータがありません」というメッセージを表示します。
データの整合性を保つためには、事前のデータクレンジングも重要です。QUERY関数を適用する前に、空白セルや異常値を処理しておくことで、より正確な結果を得られます。
パフォーマンスの最適化
大量のデータを扱う場合、QUERY関数のパフォーマンスが問題になることがあります。以下の点に注意することで、処理速度を向上させることができます。
まず、データ範囲を必要最小限に絞ることが重要です。A:Eのように列全体を指定するよりも、A1:E1000のように具体的な範囲を指定する方が高速に処理されます。
また、複雑な計算は可能な限りQUERY関数の外で行うことをお勧めします。例えば、売上金額に消費税を加算した値で集計する場合、事前に計算列を作成してからQUERY関数を適用する方が効率的です。
インデックスの概念はありませんが、データを事前にソートしておくことで、ORDER BY句の処理が高速化される場合があります。頻繁に使用する並び順がある場合は、元データをその順序で管理することを検討してください。
他の関数との組み合わせ
QUERY関数は単独でも強力ですが、他の関数と組み合わせることでさらに柔軟な処理が可能になります。
IMPORTRANGE関数と組み合わせれば、他のスプレッドシートのデータを参照してクエリを実行できます。
=QUERY(IMPORTRANGE(“スプレッドシートID”, “シート名!A1:E100”), “SELECT * WHERE Col3 = ‘関東'”, 1)
ARRAYFORMULA関数と組み合わせることで、QUERY関数の結果に対してさらに計算を適用することも可能です。ただし、この組み合わせは複雑になりがちなので、必要性を慎重に検討してください。
QUERY関数の結果を別のQUERY関数の入力として使用する、入れ子構造も可能です。ただし、可読性が低下するため、複雑すぎる入れ子は避けるべきです。
これらのテクニックを活用することで、スプレッドシートをより高度なデータ分析ツールとして活用できます。最初は基本的な使い方から始めて、徐々に高度なテクニックを取り入れていくことをお勧めします。実際の業務データで練習を重ねることで、QUERY関数の可能性を最大限に引き出せるようになるでしょう。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
エクセルやGoogleスプレッドシートで#VALUE!を表示させない方法
エクセルやスプレッドシートを利用する際に、#VALUE!エラーが表示されることはよくあります。このエラーは、数値を期待しているセルに、文字列(テキスト)や空白など不適切なデータが含まれている場合に発生し、作業を中断させる要因となります。特に…
詳しくみるスプレッドシートでウィンドウ枠を固定・解除するには?PC・スマホ対応ガイド
Googleスプレッドシートでウィンドウ枠を固定することで、大量のデータをスクロールしても見出し行や重要な列を常に表示させることができます。売上データの管理、在庫リストの確認、スケジュール表の閲覧など、長大な表を扱う際に便利な機能です。 こ…
詳しくみるエクセルの進捗管理表の作り方|無料テンプレートつき
プロジェクトや日々の業務において、タスクが計画通りに進んでいるか把握する進捗管理は非常に重要です。進捗管理を行うことで、遅延の早期発見やリソースの適切な配分、関係者とのスムーズな情報共有が可能になります。 この記事では、エクセル初心者の方に…
詳しくみるエクセルで日付を入力するには?簡単・自動でできる方法を解説
エクセルは多機能な表計算ソフトウェアであり、日付の管理を効率的に行う手段として非常に便利です。日付を手動で入力するのは手間がかかりますが、簡単に自動で入力する方法が存在します。さらに、特定の形式で日付を短時間で入力するテクニックや、日付の連…
詳しくみるTRUNC関数の使い方!数値の切り捨て、切り上げ切り捨て方法を解説
ExcelのTRUNC関数(読み方:トランク関数)は、指定した桁数で数値を切り捨てる関数です。 この記事では、TRUNC関数の基本的な使い方から、INT関数やROUNDDOWN関数との違い、具体的な利用シーンや注意点までを初心者にもわかりや…
詳しくみるExcelのMEDIAN関数の使い方:中央値の計算からデータ分析への活用まで
ExcelのMEDIAN関数は、一連の数値の中央に位置する値、つまり中央値を求めるための関数です。平均値(AVERAGE関数)と似ていますが、MEDIAN関数はデータの偏りの影響を受けにくいため、より実態に近い数値を把握したい場合に適してい…
詳しくみる