はじめに
Googleスプレッドシートには、数多くの強力な関数が用意されていますが、その中でも特にデータ分析やフィルタリングに便利なのがQUERY(クエリ)関数です。QUERY関数は、SQLライクなクエリ文法を使用してデータの抽出や集計を行うことができ、複雑なデータ処理をシンプルに解決します。Excelでのピボットテーブルやフィルタリングに似ていますが、より柔軟で、自由度の高いデータ操作が可能です。
この記事では、QUERY関数の基本的な使い方から、実際のビジネスシーンでの応用例、他の関数との組み合わせまでを詳しく解説します。QUERY関数をマスターすることで、日常業務におけるデータ管理が格段に効率化されることでしょう。
1. QUERY関数とは?
GoogleスプレッドシートのQUERY関数は、データベースのSQL文法に似たクエリを使って、スプレッドシート内のデータをフィルタリング、並べ替え、集計するための強力なツールです。例えば、数千行に及ぶデータセットから特定の条件に合うデータだけを抽出したり、売上データを日別に集計したりすることが、簡単なクエリ文で実現できます。
1.1 QUERY関数の基本構文
=QUERY(データ範囲, クエリ, [ヘッダー行数])
● データ範囲:フィルタリングや検索対象となるデータの範囲(例:A1:D100
)
● クエリ:SQLライクな文法で書かれた検索条件や操作(例:"SELECT * WHERE A > 100"
)
● ヘッダー行数(省略可):ヘッダー行の数を指定(通常は1行)

2. QUERY関数の基本的な使い方
QUERY関数は、フィルタリングや集計、データの並べ替えなど、さまざまなデータ操作を1つの関数で行うことができます。基本的な使い方は、データの範囲とクエリを指定するだけで、柔軟なデータ処理が可能です。以下に、QUERY関数を使った簡単な操作の実例を紹介します。
2.1 SELECT文を使った基本的なデータ抽出
たとえば、以下のような営業データがあるとします。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/02 | 鈴木 | 90,000 | 大阪 |
2024/01/03 | 高橋 | 150,000 | 東京 |
2024/01/04 | 田中 | 80,000 | 名古屋 |
このデータから、売上が100,000円以上の営業データだけを抽出する場合、以下のようにQUERY関数を使います。
=QUERY(A1:D5, "SELECT * WHERE C > 100000", 1)
● このクエリは、売上が100,000円以上の行をすべて表示します。
● SELECT *
は、すべての列(A~D列)を選択するという意味です。
● WHERE C > 100000
は、C列(売上)が100,000より大きい条件でフィルタリングします。
結果として、以下のデータが表示されます。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/03 | 高橋 | 150,000 | 東京 |
2.2 WHERE文を使った条件検索
QUERY関数のWHERE句を使うと、さらに複雑な条件でデータを検索することが可能です。例えば、地域が「東京」で、売上が100,000円以上のデータだけを抽出したい場合は、以下のように記述します。
=QUERY(A1:D5, "SELECT * WHERE C > 100000 AND D = '東京'", 1)
このクエリは、売上が100,000円以上かつ地域が東京のデータを抽出します。結果は次の通りです。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/03 | 高橋 | 150,000 | 東京 |
2.3 ORDER BYでデータを並べ替え
QUERY関数は、データの並べ替えも簡単に行えます。例えば、売上順にデータを並べ替えたい場合は、以下のようにクエリを記述します。
=QUERY(A1:D5, "SELECT * ORDER BY C DESC", 1)
● ORDER BY C DESC
は、C列(売上)を降順に並べ替えるという意味です(降順:大きいものから順に表示)。
● DESC
は降順、ASC
は昇順を意味します。
結果は次の通りです。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/03 | 高橋 | 150,000 | 東京 |
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/02 | 鈴木 | 90,000 | 大阪 |
2024/01/04 | 田中 | 80,000 | 名古屋 |
2.4 GROUP BYでデータを集計
GROUP BY句を使うと、データをグループ化して集計できます。たとえば、地域ごとに売上を合計する場合、次のようにQUERY関数を使います。
=QUERY(A1:D5, "SELECT D, SUM(C) GROUP BY D", 1)
このクエリは、地域ごとに売上を集計し、結果を表示します。
地域 | 売上合計 |
---|---|
東京 | 270,000 |
大阪 | 90,000 |
名古屋 | 80,000 |
2.5 LIMITで表示行数を制限
LIMIT句を使えば、表示する行数を制限することができます。例えば、最初の2行だけを表示したい場合、以下のように記述します。
=QUERY(A1:D5, "SELECT * LIMIT 2", 1)
結果として、最初の2行のみが表示されます。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/02 | 鈴木 | 90,000 | 大阪 |
3. QUERY関数の応用例
QUERY関数を使うことで、日常業務におけるデータ処理を大幅に効率化できます。以下に、具体的なビジネスシーンでの応用例をいくつか紹介します。
実例1:営業データの抽出と集計
営業チームが月次の売上データを管理しているとします。その中で、特定の地域や担当者ごとに売上を集計し、フィルタリングしたい場合、QUERY関数が非常に便利です。
データ
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/02 | 鈴木 | 90,000 | 大阪 |
2024/01/03 | 高橋 | 150,000 | 東京 |
2024/01/04 | 田中 | 80,000 | 名古屋 |
2024/01/05 | 山田 | 200,000 | 東京 |
フィルタリング
東京地域のデータだけを抽出し、売上が100,000円以上の結果を表示したい場合、次のクエリを使います。
=QUERY(A1:D6, "SELECT * WHERE D = '東京' AND C > 100000", 1)
結果は次の通りです。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/03 | 高橋 | 150,000 | 東京 |
2024/01/05 | 山田 | 200,000 | 東京 |
実例2:複数条件でのデータフィルタリング
次に、担当者ごとの売上データを抽出し、さらに複数条件を組み合わせてデータを抽出する場合の実例です。
データ
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/01 | 佐藤 | 120,000 | 東京 |
2024/01/02 | 鈴木 | 90,000 | 大阪 |
2024/01/03 | 高橋 | 150,000 | 東京 |
2024/01/04 | 田中 | 80,000 | 名古屋 |
2024/01/05 | 山田 | 200,000 | 東京 |
この中から、東京地域の売上が150,000円以上のデータを抽出し、売上が高い順に並べたい場合、次のようなクエリを使います。
=QUERY(A1:D6, "SELECT * WHERE D = '東京' AND C >= 150000 ORDER BY C DESC", 1)
このクエリで表示されるデータは以下の通りです。
日付 | 担当者 | 売上 | 地域 |
---|---|---|---|
2024/01/05 | 山田 | 200,000 | 東京 |
2024/01/03 | 高橋 | 150,000 | 東京 |
実例3:売上データを日別・月別に集計
日々の売上データを集計し、月別や日別に売上を確認するのはビジネスにおいて非常に重要です。QUERY関数を使えば、月別に売上データを集計することも簡単に行えます。
データ
日付 | 売上 |
---|---|
2024/01/01 | 120,000 |
2024/01/02 | 90,000 |
2024/02/03 | 150,000 |
2024/02/04 | 80,000 |
2024/03/05 | 200,000 |
クエリで月別に集計
=QUERY(A1:B6, "SELECT SUM(B), MONTH(A) GROUP BY MONTH(A)", 1)
結果は次の通りです。
売上合計 | 月 |
---|---|
210,000 | 1月 |
230,000 | 2月 |
200,000 | 3月 |
実例4:在庫管理の効率化
QUERY関数は、在庫管理にも便利です。特定の商品が一定数以上の在庫があるかどうかを簡単にチェックできます。
データ
商品名 | 在庫数 | 値段 |
---|---|---|
ノートPC | 50 | 120,000 |
スマホ | 30 | 80,000 |
タブレット | 15 | 70,000 |
モニター | 10 | 40,000 |
クエリで在庫50以上の商品を抽出
=QUERY(A1:C5, "SELECT * WHERE B >= 50", 1)
結果は次の通りです。
商品名 | 在庫数 | 値段 |
---|---|---|
ノートPC | 50 | 120,000 |
4. QUERY関数のメリットとデメリット
4.1 メリット
4.2 デメリット
5. 他のGoogleスプレッドシート関数との組み合わせ
QUERY関数は、他のGoogleスプレッドシートの関数と組み合わせることで、さらに強力なツールになります。特に、IMPORTRANGE関数やARRAYFORMULAとの組み合わせで、外部シートからデータを取り込みつつ、そのデータをフィルタリングや集計することができます。
IMPORTRANGEとの組み合わせ
外部のスプレッドシートからデータを取り込み、それをQUERY関数でフィルタリングする場合、次のような構文を使います。
=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/外部シートID", "シート1!A1:D100"), "SELECT * WHERE B > 100", 1)
6. まとめ:QUERY関数でデータ管理を効率化しよう
GoogleスプレッドシートのQUERY関数は、データのフィルタリングや集計、並べ替えを簡単に行える非常に強力なツールです。特に、大量のデータを扱う場合や、複数の条件でデータを絞り込む必要がある場面で、その威力を発揮します。SQLに似た文法を使うことで、高度なデータ処理をスプレッドシート上でシンプルに行うことができるため、ビジネスのデータ管理や分析において非常に有効です。
QUERY関数を使いこなすことで、スプレッドシートのデータ管理が効率化され、日常業務の生産性を大幅に向上させることができるでしょう。ぜひ、この機会にQUERY関数を活用してみてください!
コメント