データをグループごとに集計したいとき、多くの方はピボットテーブルを利用しているでしょう。しかしピボットテーブルは更新が手動であったり、範囲が変わると再設定が必要な場面もあります。そんなときに便利なのが、関数ベースで動的に集計できるGROUPBY関数です。この記事では、GROUPBY関数の基本的な使い方からピボットテーブルの代わりとして活用する方法までを解説します。
【要点】GROUPBY関数で配列を集計する3つのポイント
- =GROUPBY(rows, values, function): 行ラベルを指定して、値に対して集計関数を適用します。引数の順序を覚えるだけで基本的な集計ができます。
- 動的な更新が可能: 関数を使うため、元データが変われば自動で結果が更新されます。ピボットテーブルのように手動更新は不要です。
- ピボットテーブルと使い分け: GROUPBYは簡易的な集計に最適ですが、複雑なレイアウトやフィルタリングが必要な場合はピボットテーブルが優れています。
ADVERTISEMENT
目次
GROUPBY関数の概要と利点
GROUPBY関数は、Googleスプレッドシートでグループごとの集計を簡単に行える関数です。2023年に追加された新しい関数で、従来のQUERY関数やピボットテーブルに代わる選択肢として注目されています。最大の利点は、元データを変更すると自動で集計結果が更新される点です。ピボットテーブルでは範囲を更新する必要がありますが、GROUPBY関数は参照範囲を配列として指定するため、データの増減にも柔軟に対応できます。また、数式としてセルに記述するため、他の関数と組み合わせて使うことも可能です。
GROUPBY関数の基本構文と使い方
まずはGROUPBY関数の構文を確認しましょう。引数は全部で8つありますが、最初の3つだけ覚えれば基本的な集計が行えます。
- rows: 行ラベルとして使う列の配列を指定します。複数列を指定することもできます。
- values: 集計したい値の列の配列を指定します。
- function: 集計方法を指定します。SUM, AVERAGE, COUNT, MAX, MINなどが使えます。
- row_totals: 行の合計を表示するかどうかを指定します(省略可、0=なし、1=あり)。
- column_totals: 列の合計を表示するかどうかを指定します(省略可)。
- order: 並べ替えの順序を指定します(省略可)。
- empty: 空のセルの扱いを指定します(省略可)。
- header: ヘッダー行の有無を指定します(省略可)。
基本的な集計の手順
それでは、実際にGROUPBY関数を使って集計してみましょう。以下のような売上データがあるとします。
元データ(A列: 商品名, B列: 売上金額)
- 結果を表示したいセルを選択する
まず、集計結果を出力する先頭セルをクリックします。今回はセルD1を選択します。 - GROUPBY関数を入力する
次の数式を入力します。
=GROUPBY(A2:A100, B2:B100, SUM)
この数式は、A2:A100の商品名ごとにB2:B100の売上金額を合計します。 - Enterキーで確定する
結果が自動的に表示されます。商品ごとの合計が一覧で表示され、データが増えても自動更新されます。
これだけで、商品別の売上合計が簡単に集計できました。列の見出しは自動で付けられ、元データの列名がそのまま使われます。
GROUPBY関数の実践例
基本を押さえたところで、さらに実践的な使い方を紹介します。複数グループの指定や並べ替えなど、便利な応用方法を覚えましょう。
複数のグループで集計する
グループ化を複数の列で行いたい場合は、rows引数に複数の範囲を指定します。例えば、商品名とカテゴリでグループ化するには次のようにします。
=GROUPBY({A2:A100, C2:C100}, B2:B100, SUM)
これで、商品名とカテゴリの組み合わせごとに売上を合計できます。結果は2列のグループ列と1列の値列で表示されます。
集計結果を並べ替える
order引数を使って、集計結果を昇順や降順に並べ替えられます。例えば、売上合計の大きい順に表示するには、次のように指定します。
=GROUPBY(A2:A100, B2:B100, SUM, , , 3, 1)
第6引数(order)に「3」を指定することで、値列(3列目)で降順に並べ替えます。昇順にするには「2」を指定します。
複数の集計値を同時に求める
values引数に複数列を指定すれば、複数の項目を同時に集計できます。例えば、売上金額の合計と平均を同時に求めるには、次のように配列で指定します。
=GROUPBY(A2:A100, {B2:B100, B2:B100}, {SUM, AVERAGE})
注意点として、function引数にも配列を指定する必要があります。これで、商品ごとの合計と平均が並んで表示されます。
ADVERTISEMENT
GROUPBY関数とピボットテーブルの比較
GROUPBY関数はピボットテーブルの代わりになると言われますが、実際の使い勝手を比較してみましょう。以下の表に主な違いをまとめました。
| 項目 | GROUPBY関数 | ピボットテーブル |
|---|---|---|
| 更新の仕組み | 数式で自動更新 | 手動更新またはスクリプト必要 |
| フィルタリング | FILTER関数などと組み合わせる | スライサーやフィルタが充実 |
| レイアウトの自由度 | 固定された列構成 | 行、列、値の自由な配置 |
| 計算フィールド | 数式で代用可能 | 専用の計算フィールド機能 |
| データ量 | 大規模データには不向き | 大量データにも対応 |
| 他の関数との連携 | 容易に組み合わせられる | 難しい(結果を参照する程度) |
このように、GROUPBY関数は動的で関数連携しやすいというメリットがある一方、ピボットテーブルのような柔軟なレイアウトやフィルタリング機能はありません。用途に応じて使い分けることが大切です。
GROUPBY関数を使う際の注意点
参照範囲に空白がある場合の動作
GROUPBY関数は、rowsやvaluesに空白セルが含まれていると正しく動作しないことがあります。特に、行ラベルに空白があると、そのグループは無視されます。データ範囲は連続したセルを指定し、空白を避けるようにしましょう。
関数の制限事項
GROUPBY関数は、すべての集計関数に対応しているわけではありません。サポートされている主な関数は、SUM、AVERAGE、COUNT、MAX、MIN、MEDIAN、STDEV、VARなどです。COUNTIFのような条件付き集計は直接使えません。その場合は、別途FILTER関数と組み合わせる必要があります。
並べ替えの注意
order引数で並べ替えを行う場合、指定する数字は結果テーブル内の列番号です。グループ化した列が複数ある場合は番号がずれるため、注意が必要です。また、並べ替えの基準となる列は、グループ列でも値列でも構いません。
他のシートやファイルを参照する場合
GROUPBY関数は、同じシート内のデータだけが対象です。別のシートやファイルを参照したい場合は、QUERY関数やIMPORTRANGE関数を使う必要があります。その場合、GROUPBY関数の代わりにQUERY関数でグループ化する方法も検討しましょう。
まとめ
この記事では、GROUPBY関数を使って配列を動的に集計する方法を解説しました。基本構文を覚えれば、簡単な集計は数式一つで実現できます。また、ピボットテーブルとの違いを理解することで、状況に応じた使い分けができるようになります。次に試していただきたいのは、QUERY関数との組み合わせや、条件に応じた集計を行うためのFILTER関数の活用です。ぜひ実際のデータでGROUPBY関数を試し、スプレッドシートの集計作業を効率化してください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
