要点 —
GROUPBY(行フィールド, 値, 関数)は、グループ化する列、数値の列、 集計方法を受け取り、完成した集計表をスピルします。=GROUPBY(C2:C1000, D2:D1000, SUM)は地域ごとに合計を返します。誰もがはまる唯一のルール:関数は名前で渡す——SUM()ではなくSUM——第3引数は値ではなく関数そのものだからです。ピボット テーブルと違い、データが変わった瞬間に再計算され、更新は不要。UNIQUE+SUMIFSを 1式で置き換えます。Excel 365(2024〜2025年に展開)が必要で、2021以前にはありません。
=GROUPBY(C2:C1000, D2:D1000, SUM) ' 地域ごとの売上合計
=GROUPBY(C2:C1000, D2:D1000, AVERAGE) ' 集計方法を変える — 名前だけ差し替え
=GROUPBY(C2:C1000, D2:D1000, COUNT) ' 地域ごとの行数
=GROUPBY(B2:C1000, D2:D1000, SUM) ' グループ化列を2つ -> 階層になる
=GROUPBY(C2:C1000, D2:D1000, SUM, 0, 0, -2) ' 合計なし、合計値で降順に並べ替え
30年ものあいだ、Excel でデータを集計するとは、数式の世界を離れることを意味していました。
ピボットテーブル——データが変わった瞬間に古びる手作業のオブジェクトで、右クリックの
更新が要る——を作るか、UNIQUE でカテゴリを並べ、
SUMIFS でそれぞれを合計して集計表を手で組み立てるか、の
どちらかです。GROUPBY(2024年)はこの2つの手間を終わらせます。集計表を作るのをやめ、
描写するようになります——グループ化するフィールド、集計する値、その方法を告げれば、
Excel が生きたレポートをスピルします。
この記事でわかること
- 考え方の軸:レポートを描写すれば、Excel がスピルする
- 3つの必須引数——そして3番目に潜む罠
- なぜ
SUM()ではなくSUMを渡すのか(No.1のエラー) - 2列以上でのグループ化と、複数の値の同時集計
合計の深さで総計と小計を加えるSORTで包まずに集計値で並べ替える- なぜ UNIQUE + SUMIFS に、そして多くの場合ピボットテーブルにも勝るのか
考え方の軸:レポートは「作る」のではなく「描写する」
ピボットテーブルは、あなたが組み立てるモノです——フィールドを枠にドラッグすると、数式
から切り離され、更新するまで凍りついたセルの塊ができます。GROUPBY は同じ塊を作りますが、
それを生かしておく数式です。名詞から動詞への転換——集計オブジェクトを組み立てる代わりに、
「これでグループ化し、あれを合計する」という一文を書きます。
=GROUPBY(C2:C1000, D2:D1000, SUM)
' └ グループ化 └ 合計 └ 方法
左から右へ読みます。地域の列でグループ化し、売上の列を合計し、SUM を使う。
結果はスピルし——重複を除いた地域ごとに1行、それぞれの合計、そして総計が並び——
D2:D1000 の値が変わった瞬間に、そのすべての数字が更新されます。更新も、古びたピボット
キャッシュもありません。この集計がダッシュボードに供給されるとき、ピボットテーブルではなく
GROUPBY に手を伸ばす理由は、まさにこのライブ再計算にあります。
3つの必須引数
それ以外はすべて省略可能です。動く GROUPBY に必要なのは、ちょうど3つ。
=GROUPBY( 行フィールド , 値 , 関数 )
' 何でグループ化 何を集計 どう集計するか
行フィールド— 集計の行になる、重複を除いた値を持つ列(複数可):C2:C1000、 地域の列。値— 計算する対象のデータ列:D2:D1000、売上。関数— どう計算するか:SUM、AVERAGE、COUNT、MAX、MINなど。
この3つを渡せば、並べ替え済み・重複排除済み・合計付きの表が返ります。ただし、その3番目の 引数こそ、誰もが最初につまずくところです。
No.1の罠:SUM() ではなく SUM を渡す
関数 引数は値ではなく——関数そのもので、GROUPBY が各グループに適用できるよう、
名前で手渡します。使った結果ではなく、道具そのものを渡すのです。
=GROUPBY(C2:C1000, D2:D1000, SUM) ' 正解 — 関数の名前
=GROUPBY(C2:C1000, D2:D1000, SUM()) ' 誤り — #CALC!/エラー、データなしで呼び出している
=GROUPBY(C2:C1000, D2:D1000, SUM(D:D)) ' 誤り — これは1つの数値であって、関数ではない
ここでの SUM は、完成したケーキではなくレシピを手渡すようなものだと考えてください。
GROUPBY は SUM というレシピを受け取り、裏側で地域ごとに一度ずつ実行します。SUM() や
SUM(D2:D1000) と書くと、GROUPBY がグループを見る前にすべてが単一の値に潰れてしまい、
それはまさに望まない結果です。ルール:第3引数は常に裸の関数名——SUM、AVERAGE、
COUNT、PERCENTOF——決して呼び出した形にしない。
2列以上でグループ化する
行フィールド を隣り合う2列に向けると、GROUPBY は階層を作ります——1列目が外側のグループ、
2列目がその内側にネストします。
=GROUPBY(B2:C1000, D2:D1000, SUM) ' 地域、その中で製品ごとに小計
地域が最上位、その下にインデントして製品が並びます——2つの行フィールドを持つピボット
テーブルと同じ形ですが、生きた数式として。列は隣接している必要があります(または
HSTACK で連結)。左から右へ、外側から内側のグループとして
読まれます。
複数の値を一度に集計する
値 を数列に広げると、そのすべてが横並びで集計されます。
=GROUPBY(C2:C1000, D2:E1000, SUM) ' 地域ごとの売上合計 と 数量合計
いまや各地域の行に、売上と数量の2つの合計が隣り合って表示されます。これは日常のレポート
業務(売上、原価、数量、粗利をすべて地域別に)で、かつてはカテゴリごと・指標ごとに
SUMIFS を1本ずつ書いていた場面です。ここでは、値 の範囲を広げるだけ育つ1つの数式です。
合計の深さで総計と小計を加える
第5引数 合計の深さ は合計行を制御します。省略すると Excel が自動——総計と、グループ化が
許すところに小計を付けます。代わりに固定することもできます。
=GROUPBY(C2:C1000, D2:D1000, SUM, , 0) ' 0 = 合計を一切付けない
=GROUPBY(C2:C1000, D2:D1000, SUM, , 1) ' 1 = 総計のみ
=GROUPBY(B2:C1000, D2:D1000, SUM, , 2) ' 2 = 総計 + 外側グループごとの小計
=GROUPBY(C2:C1000, D2:D1000, SUM, , -1) ' 負の値 = 合計を下ではなく上に置く
2つのカンマは フィールドヘッダー(第4引数)を飛ばして 合計の深さ に届かせます。負の値は、
多くの人が見落とす小さくて便利な技です——合計を明細の上に移します(-1 は総計のみ、
-2 は小計付き)。ダッシュボードの上部に集計が載り、総計を下端でスクロールアウトさせたく
ないときに欲しい挙動です。
集計値で並べ替える — SORT は不要
つい全体を SORT で包んでグループを大きさ順に並べたくなります。
その必要はありません——並べ替え順序 が組み込まれており、グループのラベルだけでなく
結果の列でも並べ替えられます。
=GROUPBY(C2:C1000, D2:D1000, SUM, , , 2) ' 2列目(合計)の昇順で並べ替え
=GROUPBY(C2:C1000, D2:D1000, SUM, , , -2) ' 合計の降順 — 大きい地域が先頭
並べ替え順序 は列番号です:1 はグループ列、2 は最初の集計列、そして負の数は
その列を降順にします。だから -2 は、おなじみの「大きい順」ランキングを1つの引数で実現
します。GROUPBY を SORT で包みたくなったら、たいていこの引数の存在を忘れています。
なぜ UNIQUE + SUMIFS を置き換えるのか
GROUPBY 以前、数式ベースの集計は2ステップでした:重複を除いたカテゴリを並べ、それぞれを
合計する。
' 旧来の2ステップ:
=UNIQUE(C2:C1000) ' ステップ1:地域の一覧を得る(下にスピル)
=SUMIFS(D:D, C:C, F2#) ' ステップ2:その横で地域ごとに SUMIFS
' GROUPBY による置き換え:
=GROUPBY(C2:C1000, D2:D1000, SUM) ' 両ステップを1式で、合計と並べ替えも込み
旧来のパターンも依然として使えて、知っておく価値があります——ですが GROUPBY は
UNIQUE、SUMIFS、並べ替え、合計を1つの式に畳み込み、ずれる余地がありません(2ステップ版
では、UNIQUE が SUMIFS の列より遠くまでスピルすると、カテゴリを黙って取りこぼします)。
カテゴリと集計値をまとめて欲しいときは GROUPBY がすっきりした道具です。SUMIFS は、
単一の条件付き合計を特定のセルに引き出す用途に残しましょう。
判断
GROUPBY を使うのは、生きたまま他の数式に供給される集計が欲しいとき——ダッシュボードの
タイル、データが着くたびに再計算される数字、どこかから参照する表です。ピボットテーブルを
使うのは、対話的に探索したいとき:フィールドをドラッグし、スライサーを足し、ダブル
クリックで元の行にドリルダウンする。SUMIFS は「この地域の合計をこの正確なセルに」という
単発の用途に残します。ほぼすべての失敗を防ぐ2つの機械的なルール:第3引数は裸の関数名
(SUM、決して SUM() ではない)、そして合計・並べ替え・フィルターはすでに手元にある
引数——数式を何かで包む前に、合計の深さ、並べ替え順序、フィルター配列 に手を伸ばす。
「これを集計して」がオブジェクトではなく数式になった瞬間、レポートは何度もやり直す雑務では
なく、自分で自分を保つものになります。
ExcelMaster の使いどころ
GROUPBY は強力ですが、省略可能な引数が位置指定です——カンマを1つ間違えれば、違う引数を
設定してしまいます。ExcelMaster に「地域別の売上合計を、大きい順に、総計付きで」と
伝えれば、=GROUPBY(C2:C1000, D2:D1000, SUM, , 1, -2) を、スキップのカンマまで正しい位置に
置いて書きます。「顧客ごとの平均注文額と注文件数」と頼めば、値 を広げて集計方法を選びます。
そして SUM ではなく SUM() と書いて #CALC! を返す GROUPBY を貼り付けても、あるいは
UNIQUE + SUMIFS のブロックをまだ手で保守していても、パターンを見抜いて1つの数式に
書き換えます。
よくある質問
Excel の GROUPBY は何をする関数ですか?
GROUPBY(行フィールド, 値, 関数) は、行フィールド の重複を除いた値で行をグループ化し、
一致する 値 を 関数(SUM や AVERAGE など)で集計し、並べ替え・合計済みの集計表を
スピルします。ピボットテーブルの基本動作を数式にしたもので、元データが変わるたびに自動で
再計算します。
GROUPBY で SUM() ではなく SUM を渡すのはなぜですか?
第3引数が値ではなく関数だからです。GROUPBY はその関数を各グループに自分で適用するので、
SUM という名前で手渡し、呼び出しは任せます。SUM() や SUM(D:D) と書くと、グループごとの
集計ではなく1つの数値かエラーになります。AVERAGE、COUNT、MAX、PERCENTOF、任意の
LAMBDA でも同じです。
GROUPBY を合計の大きい順に並べ替えるには?
並べ替え順序 引数(6番目)を使います:=GROUPBY(C2:C1000, D2:D1000, SUM, , , -2)。数値は
列インデックスで——2 が最初の集計列——負の符号で降順になるので、-2 はグループを合計の
大きい順に並べます。数式を SORT で包む必要はありません。
GROUPBY で2列でグループ化し、2つの値を集計できますか?
できます。グループ化を2段にするには 行フィールド に隣り合う2列
(=GROUPBY(B2:C1000, D2:D1000, SUM))を渡すと、1列目が2列目をネストします。2指標にするには
値 を2列に広げると(=GROUPBY(C2:C1000, D2:E1000, SUM))、それぞれが横並びで集計されます。
両方を同時に行えます。
GROUPBY はどの Excel バージョンで使えますか?
GROUPBY は Microsoft 365 の関数で、2024〜2025年にかけて、まず Insider、次に現在のチャネル
へと展開されました。Excel 2021、2019、2016、および古いビルドの Excel for the web には
ありません。=GROUPBY(...) が #NAME? を返すなら、お使いのビルドにはまだ搭載されて
いません——UNIQUE + SUMIFS
パターンが代替策です。
検証環境
検証環境: Excel 365(Windows 11)— 最終確認 2026-07-18。
関連ガイド: ExcelのPIVOTBY関数 · GROUPBY・PIVOTBY 応用編 · ExcelのSUMIFS関数 · ExcelのUNIQUE関数 · ExcelのFILTER関数
