QUERY関数は、スプレッドシートでデータベースライクな操作を行える強力な関数です。その中でもPIVOT句を使うと、縦に並んだデータを横方向に展開し、行と列を入れ替えた集計表を簡単に作成できます。たとえば、月ごとの売上データを各商品ごとに列に並べたい場合などに役立ちます。この記事では、PIVOT句の基本構文から実践的な使用例、注意点までを詳しく解説します。
【要点】QUERY関数のPIVOT句で行データを効率的に列変換
- PIVOT句の基本構文: SELECT列, 集計関数 PIVOT(変換したい列) と記述することで、指定した列の値を見出しに変換します。
- 必ず集計関数と組み合わせる: PIVOT句は単独では使えず、SUMやCOUNTなどの集計関数が必須です。
- 実データでの応用例: 売上表やアンケート結果など、カテゴリ別のクロス集計表を瞬時に作成できます。
ADVERTISEMENT
目次
PIVOT句が行データを列見出しに変換する仕組み
QUERY関数は、SQLライクなクエリ言語でデータを操作します。PIVOT句は、指定した列のユニークな値を新しい列見出しとして生成し、それに対応する集計値をセルに配置します。たとえば、商品名が列に並び、各月の売上額が行と列の交点に表示される形です。この処理には、集計関数(SUM, COUNT, AVERAGE, MAX, MINなど)が必ず必要です。PIVOT句は、GROUP BY句と似ていますが、グループ化の結果を列方向に展開する点が異なります。また、PIVOT句を使うには、SELECT句に集計関数を含める必要があり、変換対象の列は1つだけ指定できます。
QUERY関数のPIVOT句を使う具体的な手順
ここでは、実際のデータを用いてPIVOT句の操作手順を説明します。サンプルデータとして、A列に日付、B列に商品名、C列に売上金額が入力されていると仮定します。
- データ範囲と構造を確認する
まず、元データが縦持ち形式であることを確認します。各行が1つのレコードを表し、変換したいカテゴリ列(この例では商品名列)が含まれている必要があります。 - QUERY関数の基本形を入力する
結果を表示したいセルに=QUERY(と入力します。続けてデータ範囲、カンマ、ダブルクォーテーションで囲んだクエリ文、そしてヘッダー行数を指定します。 - SELECT句と集計関数を指定する
クエリ文の最初にSELECT句を書き、表示したい列と集計関数を指定します。例として、日付ごとに各商品の売上合計を求めるには、"SELECT A, SUM(C) PIVOT(B)"とします。ここでAは日付列、SUM(C)は売上合計、PIVOT(B)で商品名列を列見出しに変換します。 - PIVOT句で変換する列を指定する
PIVOT句の後ろに、列見出しにしたい列を指定します。上記の例ではB列です。この列のユニークな値がそれぞれ新しい列の見出しとなります。 - 必要に応じてWHERE句やORDER BY句を追加する
データを絞り込みたい場合はWHERE句、並び替えたい場合はORDER BY句を付け加えます。たとえば、売上1000以上のデータだけを対象にする場合は"SELECT A, SUM(C) PIVOT(B) WHERE C>=1000"とします。 - 実行結果を確認する
関数を確定(Enterキーを押す)と、指定した条件で行データが列に展開されたクロス集計表が表示されます。各セルには対応する売上合計が表示され、空白のセルは0または空白になります。
応用例:月ごとの集計
日付を月単位にグループ化したい場合は、日付列を月に変換します。たとえば、A列が日付(シリアル値)の場合、SELECT句でMONTH(A)を使えます。しかし、PIVOT句と組み合わせる際に注意が必要です。適切な例として、日付の月を抽出し、その月ごとに商品の売上合計を集計するには、"SELECT MONTH(A), SUM(C) PIVOT(B) GROUP BY MONTH(A)"とする必要があります。ただし、GROUP BY句はPIVOT句と同時に使うことができません。実際には、PIVOT句が暗黙的にGROUP BYを含むため、明示的なGROUP BYは不要です。正しい構文は、"SELECT MONTH(A), SUM(C) PIVOT(B)"です。MONTH関数で変換した値をそのままSELECTに指定します。
応用例:COUNT関数での利用
売上合計ではなく、取引件数を集計したい場合は、SUMの代わりにCOUNTを使います。"SELECT A, COUNT(C) PIVOT(B)"とすることで、日付ごとに各商品の販売件数が列に展開されます。
PIVOT句使用時の注意点とよくあるエラー
複数列のPIVOTはできない
PIVOT句で指定できる列は1つだけです。複数の列を変換したい場合は、QUERY関数を複数回使うか、ピボットテーブル機能を利用します。たとえば、商品名と地域の2つのカテゴリを列方向に展開したい場合、PIVOT句では実現できません。
PIVOT句を使うときは必ず集計関数が必要
SELECT句に集計関数がないとエラーになります。たとえば、"SELECT A, B PIVOT(C)"のように集計関数を省略すると、クエリが無効となります。必ずSUM、COUNT、AVERAGEなどの集計関数を使用してください。
PIVOT句とORDER BYの組み合わせ
PIVOT句で生成された列は、デフォルトで値の昇順(数値なら小さい順、文字列ならアルファベット順)に並びます。これを変更したい場合は、ORDER BY句で並び替えを指定します。ただし、ORDER BY句はPIVOT句の後ろに記述します。例:"SELECT A, SUM(C) PIVOT(B) ORDER BY A DESC"
ヘッダー行数の指定を間違えない
QUERY関数の第3引数(ヘッダー行数)を正しく指定しないと、データの先頭行が無視されたり、見出しがデータとして扱われたりします。通常、見出し行が1行ある場合は1と指定します。ただし、PIVOT句を使う場合、QUERY自身が新しい見出し行を生成するため、元データの見出し行は特別な注意が必要です。元データに見出し行がある場合は1を指定し、ない場合は0を指定します。
空白やエラーの処理
PIVOT句の結果、該当するデータがないセルは空白になります。空白を0で表示したい場合は、IFERROR関数やTO_TEXT関数などを組み合わせて調整します。また、元データに空白セルがあると、PIVOT句が意図しない列を生成する可能性があるため、事前にデータをクリーニングしておきましょう。
ADVERTISEMENT
QUERYのPIVOT句とピボットテーブルの比較
| 比較項目 | QUERY PIVOT句 | ピボットテーブル |
|---|---|---|
| 操作の簡単さ | 関数を1つ入力するだけで完了 | メニューから数回クリックが必要 |
| データ更新への対応 | 元データの変更に即座に自動反映 | 自動更新されるが、設定によっては手動更新が必要 |
| 柔軟性 | 集計関数の種類が限られる(SUM, COUNT, AVERAGE, MAX, MIN等) | 豊富な集計オプション(分散、標準偏差など) |
| 列の制限 | 1列のみ変換可能 | 複数列を行・列・値に設定可能 |
| 見た目の調整 | 書式は別途設定する必要あり | 書式設定が豊富で、条件付き書式も適用可能 |
| 動的なデータ範囲 | 範囲を固定するか、配列数式で拡張する必要あり | データ範囲を自動で認識し、追加行にも対応 |
まとめ
今回は、QUERY関数のPIVOT句を使って行データを列に変換する方法を解説しました。基本的な構文は=QUERY(範囲, "SELECT 列, 集計関数 PIVOT(変換列)", ヘッダー数)です。このテクニックを使えば、集計表を関数ベースで自動化でき、データ更新にも強みを発揮します。次は、QUERY関数の他の句(WHERE、GROUP BY、LABELなど)を組み合わせて、さらに高度なデータ分析に挑戦してみてください。PIVOT句と合わせて使うことで、スプレッドシートのデータ処理能力を大きく引き出せます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
