GoogleスプレッドシートQUERY関数の使い方【実例付き】データ抽出・集計を自動化

Googleスプレッドシート QUERY関数 アイキャッチ画像 Googleスプレッドシート

Excel歴15年の実務家の視点から、Googleスプレッドシートを業務で使いこなすための核心的な機能であるQUERY関数について解説します。

これまで企業の経理部門や営業管理の現場で数多くのスプレッドシートを見てきましたが、Excelの「フィルタ機能」や「VLOOKUP関数」だけで複雑な集計をこなそうとして、数式がスパゲッティ状態になっているケースを数多く見かけました。そうした非効率を解消し、データを自由自在に操るための最強の武器が、このGoogleスプレッドシート QUERY関数です。

SQL(データベース操作言語)に近い記述でデータを抽出できるこの関数をマスターすれば、手作業の転記や更新漏れによるミスは激減します。実務で即戦力となる具体的な設定方法と、プロが現場で行っている運用のコツを共有します。

Googleスプレッドシート QUERY関数の基本構造と引数の役割

Googleスプレッドシート QUERY関数を使いこなす第一歩は、その独特な構文を正しく理解することです。Excelの標準的な関数とは異なり、数式内に「命令(クエリ)」を記述する点が最大の特徴です。

基本構文と3つの引数の指定方法

基本形は =QUERY(データ範囲, "クエリ", [見出し]) です。

1. データ範囲: 抽出元となるマスターデータ(売上管理表や顧客リストなど)を範囲指定します。
2. クエリ: どのような条件で抽出するかを指示します。ここは必ずダブルクォーテーション(” “)で囲みます。
3. 見出し: データの先頭何行が見出しであるかを指定します(通常は「1」)。

Googleスプレッドシート QUERY関数 - 「営業部売上管理表」の元データとQUERY関数の基本構成
「営業部売上管理表」の元データとQUERY関数の基本構成

SELECT句で必要な項目をピックアップする

実務で最も頻出するのは「不要な列を除いて必要な情報だけを抽出する」操作です。例えば、A列からF列まである「経費精算一覧」から、B列(部署名)とE列(金額)だけを抜き出したい場合は、"SELECT B, E" と記述します。

ポイント: クエリ内で列を指定する際は、必ずアルファベット(大文字)を使います。カンマで区切ることで、任意の順番で列を並べ替えて抽出することも可能です。

WHERE句による条件付き抽出のルール

条件に合致する行だけを絞り込むのがWHERE句です。経理の現場で「未清算の案件だけを抽出したい」といった場合に重宝します。
文字列を指定する場合は、シングルクォーテーション(’ ‘)で囲む必要があります(例:WHERE B = '経理部')。一方、数値の場合はそのまま記述します(例:WHERE E >= 100000)。

Googleスプレッドシート QUERY関数 - WHERE句を使用して「売上金額が5万円以上の田中さんのデータ」を抽出した結果画面
WHERE句を使用して「売上金額が5万円以上の田中さんのデータ」を抽出した結果画面

実務効率を最大化するデータの並べ替えと複数条件

基本の抽出ができるようになったら、次は「報告書としてそのまま使える状態」にデータを整える技術を身につけましょう。筆者が研修で教えている際、受講生が最も感動するのがこの並べ替えと条件結合の簡便さです。

ORDER BYで優先順位に基づいた並べ替え

抽出したデータを「日付の新しい順」や「売上の高い順」に並べたいときに使うのがORDER BYです。
降順(大きい順)にしたい場合は DESC、昇順(小さい順)にしたい場合は ASC を末尾に付けます。

=QUERY(A:F, "SELECT B, E WHERE B = '営業部' ORDER BY E DESC", 1)

この一文で、営業部の売上が高い順に並んだリストが完成します。を手動で行う手間がなくなります。

ANDとORを組み合わせた高度なロジック

「2026年4月以降」かつ「未入金の案件」といった複合条件も、ANDを使えば一行で記述可能です。
WHERE A > date '2026-04-01' AND F = '未入金'

逆に「営業1課または営業2課」のように、いずれかの条件に合致させたい場合はORを使います。
筆者の経験では、特定の商品型番(例:A-001、A-005)だけをピックアップして在庫確認リストを作成する際に、このOR条件を多用しています。

Googleスプレッドシート QUERY関数 - 複数のAND条件を組み合わせて「期限超過」かつ「高額案件」を抽出する手順
複数のAND条件を組み合わせて「期限超過」かつ「高額案件」を抽出する手順

LABEL句で見出しをプロ仕様に変更する

QUERY関数で抽出した際、見出しが元のデータのままだと不都合な場合があります。報告用資料として見栄えを整えるなら、LABEL句で項目名を上書きしましょう。
LABEL E '確定売上金額'
このように指定することで、抽出結果のヘッダー部分を任意の日本語名称に変更できます。

集計作業を劇的に変えるGROUP BYと集計関数

QUERY関数の真骨頂は、データの抽出と同時に「集計」が行える点にあります。Excelであればピボットテーブルを作成する工程が、関数一つで完結します。

GROUP BYで項目別の集計表を自動作成する

「部署ごとの経費合計」や「担当者別の売上件数」を算出する場合、GROUP BYを使います。
SELECT B, SUM(E) GROUP BY B
この数式は「B列(部署名)ごとに、E列(金額)を合計(SUM)する」という意味になります。

実務でよく見かけるのは、マスターデータが更新されるたびにSUMIF関数をコピーして範囲を修正しているケースです。QUERY関数なら、新しい部署や担当者が増えても、自動的に集計行が追加されるためメンテナンスフリーになります。

注意点: GROUP BYを使用する場合、SELECT句には「グループ化した列」か「集計関数(SUM, COUNT, AVGなど)」のいずれかしか記述できません。関係のない列をSELECTに入れるとエラーになるため注意してください。

Googleスプレッドシート QUERY関数 - 「商品型番A-001」などの在庫データを部署別に集計したPIVOTの結果表示
「商品型番A-001」などの在庫データを部署別に集計したPIVOTの結果表示

PIVOT句によるクロス集計の実現

さらに高度なのがPIVOT句です。「行に担当者、列に月」を配置したマトリックス表を作成できます。
SELECT B, SUM(E) GROUP BY B PIVOT C
この記述により、担当者(B列)ごとの売上合計(E列)を、月(C列)別に展開したクロス集計表が瞬時に生成されます。

算術演算をクエリ内で実行する

クエリ内では SELECT E 1.1 のように計算式を入れることも可能です。例えば、税抜価格の列から税込価格を算出しながら抽出するといった処理が、元の表を加工することなく行えます。

現場で即採用できる実務シナリオ別の活用例

ここからは、筆者が実際に構築したスプレッドシートの中から、汎用性の高い実務シナリオを紹介します。

1. 顧客リスト:直近1ヶ月のコンタクト履歴抽出

顧客マスターから、最終対応日が30日以内の案件だけをリストアップします。
=QUERY(顧客名簿!A:H, "SELECT B, D, G WHERE G > date '"&TEXT(TODAY()-30,"yyyy-mm-dd")&"' ORDER BY G DESC", 1)
を組み合わせることで、常に「今」見るべき顧客が最上段に表示されるダッシュボードが作れます。

2. 在庫管理:発注点割れの商品アラート

商品型番「B-200」シリーズなどの在庫管理表から、在庫数が適正数を下回っているものだけを表示します。
=QUERY(在庫!A:F, "SELECT A, B, C, D WHERE C < D LABEL A '商品型番', C '現在庫', D '発注点'", 1)
これを共有シートの目立つ場所に置いておけば、発注漏れを視覚的に防ぐことができます。

3. 勤怠管理:過重労働の早期発見リスト

「佐藤」「鈴木」といった社員ごとの勤務データから、月間の残業時間が45時間を超えている行だけを抽出します。
=QUERY(勤怠ログ!A:K, "SELECT B, C, J WHERE J > 45 ORDER BY J DESC", 1)
管理職向けのモニタリングシートとして非常に有効です。

Googleスプレッドシート QUERY関数 - 「勤怠管理表」から残業超過者を自動抽出したアラート画面
「勤怠管理表」から残業超過者を自動抽出したアラート画面

プロのコツ:15年の実務経験から得た運用の知恵

QUERY関数は強力ですが、大規模な共有シートで運用する際にはいくつか「プロならではの工夫」が必要です。初心者がつまずきやすいエラーへの対処法も含めて解説します。

列の挿入に強い「Col形式」での記述

通常 SELECT A, B と記述しますが、これには「元の表で列が挿入されると参照がズレる」という弱点があります。これを防ぐには、範囲を { } で囲み、列を Col1, Col2 と指定します。

=QUERY({A:E}, "SELECT Col2, Col5", 1)

筆者の経験では、多人数で共有しているシートで、誰かが勝手に列を増やして数式が壊れるトラブルを何度も見てきました。最初から Col 形式で書いておくのが、プロの防御策です。

混合データ型(Mixed Data Type)のエラー回避

QUERY関数には「一つの列に数値と文字列が混在している場合、多い方のデータ型を優先し、少ない方のデータを無視する」という仕様があります。
経理の現場では、金額列に「不明」や「-(ハイフン)」などの文字列が混じると、数値データが抽出されなくなる現象がよく起きます。

ポイント: データの型を統一するか、あるいはデータ範囲を ARRAYFORMULA(TO_TEXT(A:E)) のようにすべて文字列として読み込ませることで、この致命的なエラーを回避できます。

ショートカットキーを駆使した数式構築

QUERY関数の数式は長くなりがちです。数式バー内で Ctrl + Enter(Macは Cmd + Enter)を押すとセル内で改行できます。
"SELECT B, SUM(E)
WHERE B = '営業部'
GROUP BY B"

このように句ごとに改行して記述することで、デバッグが容易になり、タイプミスも減ります。

まとめ

Googleスプレッドシート QUERY関数は、単なる抽出機能を超えた「データ加工のハブ」となる存在です。

Excelでも、最新のMicrosoft 365であれば「FILTER関数」などの動的配列関数が実装されていますが、GoogleスプレッドシートのQUERY関数が持つ「SQLライクな集計能力」は依然として強力です。
※参考:Microsoft公式サイト [FILTER 関数](https://support.microsoft.com/ja-jp/office/filter-%E9%96%A2%E6%95%B0-f4f7cb66-82eb-4767-8f7c-44875745c639)

また、より複雑なデータ結合や大規模な加工が必要な場合は、Excelの「Power Query」という機能がQUERY関数の強力なライバルとなります。
※参考:Microsoft公式サイト [Excel での Power Query の概要](https://support.microsoft.com/ja-jp/office/excel-%E3%81%A7%E3%81%AE-power-query-%E3%81%AE%E6%A6%82%E8%A6%81-7104fbee-9e62-4cb0-a02e-5bfb1a6c536a)

実務を効率化するために、以下の3点を意識して使い始めてください。

まずは `SELECT` と `WHERE` だけで「抜き出し」を自動化する
集計作業は `GROUP BY` に任せ、手動のSUMIFから卒業する
共有シートでは `Col` 指定を使い、構造の変化に強い数式を作る

一度この利便性を体感すれば、二度と手作業のコピペには戻れなくなるはずです。と組み合わせて、付加価値の高い仕事に時間を使えるようにしましょう。

コメント

タイトルとURLをコピーしました