PR

Excel GROUPBY関数とは?使い方・SUMIFSとの違い・実務での使い分けを徹底解説

Excel
記事内に広告が含まれています。

Excelで売上データを集計するとき、こんな悩みはありませんか?

・商品ごとの売上をまとめたい
・担当者別の売上を集計したい
・月ごとの売上を一覧にしたい

こうした集計を行う場合、多くの人はSUMIFS関数を使います。
しかし実際には、

・商品ごとに数式を作る必要がある
・項目が増えるたびに数式を追加する
・後から修正するのが面倒

といった「手間」と「管理のしづらさ」に悩むことも多いのではないでしょうか。

そんなときに便利なのが、Excel365で使える「GROUPBY関数」です。
GROUPBY関数を使えば、1つの数式だけでグループごとの集計表を自動作成できます。

この記事では、

・GROUPBY関数の基本的な使い方
・SUMIFS関数との違い
・実務での使い分け

を、具体例を交えながらわかりやすく解説します。

GROUPBY関数とは?できることと特徴を解説

GROUPBY関数とは、データを「項目ごとにまとめて集計する」Excelの新しい関数です。
Excel365で新しく関数が追加されました。

GROUPBY関数でできること

GROUPBY関数を使うと、次のような集計を1つの数式で行うことができます。

・商品ごとの売上集計
・担当者別の売上集計
・日付ごとの売上集計
・商品×日付など複数項目での集計
・売上額と個数など複数列の同時計算
・合計や平均など複数の集計方法の同時表示

GROUPBY関数の構文

GROUPBY関数の構文は以下の通りです。

=GROUPBY(row_fields,values,function,[field_headers],[total_depth],[sort_order],[filter_array],[field_relationship])

引数の説明は以下の通りです。
基本的には、必須引数の3つが使用できれば問題ありません。

■設定が必須な引数一覧

引数内容詳細
row_fields分類するデータ項目(集計軸)複数列を選択することが可能
values集計するデータ範囲複数列を選択することが可能
(列数分の集計結果が表示)
function集計方法関数名を指定
※複数選択可能
SUM/AVERAGE/COUNTなど
💡ポイント
  • 関数名を指定するとき、()をつける必要はありません。○・・・SUM ✖・・・SUM()

以下は省略可能な引数です。
省略可能な引数は細かい制御に使うため、まずは必須引数(row_fields・values・function)だけでも十分に活用できますが、参考までに紹介します。

■設定が省略可能な引数一覧

引数内容詳細
field_headers見出し行の有無を指定1:見出しあり(既定)
0:見出しなし
total_depth合計行(小計・総計)の表示を指定0:表示しない
1以上:階層ごとに合計を表示
sort_order並び替え順を指定1:昇順
-1:降順
※複数列の並び替えも指定可能
filter_array集計対象のデータを条件で絞り込むFILTER関数のように条件配列を指定
field_relationship複数列でグループ化する際の関係性を指定階層構造か、単純な組み合わせかを制御

■主な第3引数(集計方法)

「function」(集計方法)ですが、主な関数一覧は以下の通りです。
他にも指定できる関数はありますが、まずは代表的な関数を押さえればOKです。

関数意味
SUM合計
AVERAGE平均
COUNT数値の個数
COUNTA空白以外の個数
MAX最大値
MIN最小値
MEDIAN中央値

ただ「COUNTA」を使用する際は注意が必要で、GROUPBY使用すると空白セルもカウントされることがあります。
(GROUPBY関数の処理で、空白セルもデータの一部として扱われてしまう可能性があるため)

正確な件数を求めたい場合は、COUNT関数やFILTER関数との組み合わせを検討してください。

GROUPBY関数の大きなメリット

GROUPBY関数の大きなメリットは、SUMIFS関数と比較すると分かりやすいです。
以下はSUMIFS関数とGROUPBY関数を比較した表となります。

項目SUMIFSGROUPBY
役割条件の合計を出すグループごとに集計
結果1つの値
用途特定条件の合計カテゴリ別集計

つまり、SUMIFSとGROUPBYの違いを一言でいうと、以下のようになります。

SUMIFS :条件に一致するデータの合計を出す関数
GROUPBY:自動でデータを分類して集計表を作る関数

以下の表から、商品名ごとに合計を集計する例で説明します。

これをSUMIFSで集計する場合、
・グループ化する項目(商品名など)を手動で書き出す
・SUMIFS数式を入力し、対象列のセルにコピペ

という作業が発生します。

=SUMIFS(B$2:B$12,A$2:A$12,$E2)

しかし、この場合だと
・項目に増減が発生した場合、手動で修正が必要
・SUMIFSの計算が適切にできるように参照範囲を設定(絶対参照を組み合わせて範囲を固定したり)

してあげる必要があり、手間もかかるし、何より後々のメンテナンスが大変になります。

では、GROUPBY関数で集計したケースを見てみましょう。
以下のように重複を除いた全項目とその集計結果を一発で表示することが可能です。

=GROUPBY(A2:A12,B2:B12,SUM)

つまり、GROUPBY関数は
・一つのセルに数式を入力するだけで、グループ化した項目の集計を表示することができる
・適切な範囲設定にすれば、項目の追加・削減・修正を自動で反映してくれる

など、SUMIFSより使いやすく、後々のメンテナンスも楽にしてくれる便利な関数になります。

💡ポイント
  • デフォルトでは合計が表示されます。合計を表示させたくない場合は、第五引数[total_depth]を「0」に設定することで非表示にすることができます。※=GROUPBY(A2:A12,B2:B12,SUM,,0)

GROUPBY関数の使い方(基本)

では実際に、GROUPBY関数を使っていきたいと思います。
今回は、以下の表を使ってGROUPBY関数の主な使い方を紹介します。

一つの項目でグループ化する(売上日ごとに集計)

基本的なGROUPBY関数の使い方です。
GROUPBY関数を使うことで、グループ化した一つの項目で集計することが可能です。

日付をグループ化して、売上の合計を集計するには、以下のように数式を入力します。

=GROUPBY(B2:B12,C2:C12,SUM)

グループ化したい項目 → 集計したい範囲 → 集計方法を入力すればOKです。

複数の項目でグループ化する(商品名×日付)

GROUPBY関数は、複数の項目を組み合わせて集計することも可能です。
「商品名」と「日別」両方をグループ化した項目で、売上の合計を集計するには、以下のように入力します。

=GROUPBY(A2:B12,C2:C12,SUM)

グループ化したい項目範囲(A-B列)を指定することで、二つ以上の複数項目で集計することが可能になります。

GROUPBY関数の応用(複数列・複数集計)

複数の列(売上額・個数)を同時に集計する

GROUPBY関数では、売上や個数など複数の列をまとめて集計することも可能です。

=GROUPBY(B2:B12,C2:D12,SUM)

集計範囲を(C-D列)を指定することで、二つ以上に複数列を計算することができます。

複数の集計方法を使用する場合

GROUPBY関数の「集計方法」は、実は複数選択することが可能です。
先ほどの表から、売上額の「合計額」と「平均額」を両方計算したいとします。

集計方法は、普通に指定しただけでは複数選択することができません。
複数選択するには、HSTACK関数を組み合わせます。(横並びの場合)

HSTACK:複数のデータを横に並べる関数

HSTACK関数の構文は以下のとおりです。

=HSTACK(array1,[array2],...)

このHSTACK関数を使い、集計方法を横並びに設定します。
「合計」と「平均」を横並びにするには、以下のように入力します。

=GROUPBY(A2:B12,C2:C12,HSTACK(SUM,AVERAGE))

これで、SUM(合計)とAVERAGE(平均)を両方計算することができました。
しかし、これだと列見出しに「SUM」と「AVERAGE」が表示されてしまいます。

この列見出しを消す方法もあります。
それは、DROP関数を使うことです。

DROP:配列の先頭または末尾から、指定した数の行または列を除外する関数

DROP関数の構文は以下のとおりです。

=DROP(array,rows,[columns])

今回は列見出し(SUMやAVERAGEの行)を削除したいため、以下のように入力します。

=DROP(GROUPBY(A2:B12,C2:C12,HSTACK(SUM,AVERAGE)),1)

これで、先ほど表示されていた列見出しを消すことができます。

条件を指定して集計する(FILTER関数との組み合わせ)

GROUPBYは、SUMIFSのように直接条件を書く関数ではありません。
そのため、条件を指定する場合は FILTER関数と組み合わせて使います。
👉FILTER関数については以下記事にて詳しく解説しています。ぜひチェックしてみてください。

今回は、以下の表を使ってGROUPBY関数とFILTER関数の組み合わせを紹介します。

ここから、店舗が東京の日別売上合計を集計するには、以下のようにFILTER関数を使います。

=GROUPBY(FILTER(B2:C12,C2:C12="東京"),FILTER(D2:D12,C2:C12="東京"),SUM)

このように、
・集計軸とデータ範囲を同じ「東京」で抽出する → FILTER関数
・「東京」で抽出したものをグループ別に集計  → GROUPBY関数

とすることで、条件を指定して集計することが可能です。

SUMIFSとGROUPBYの使い分け

ここまでSUMIFS関数との違い、GROUPBY関数の使い方を見てきました。
では、どういうケースでSUMIFS/GROUPBY関数を使い分けたらよいか説明します。

SUMIFSが向いているケース

SUMIFS関数が向いているのは、主に以下のようなケースです。

①ピンポイントで数値を集計したい
②集計条件が複雑な場合
③古いExcelでも使用可能
④社内などで共有するファイルに使いやすい

①ピンポイントで数値を集計したい
→例えば、「2月1日」の「東京」の売上を集計したいなど、一つの答えが欲しい場合は、SUMIFS関数のほうが向いています。

②集計条件が複雑な場合
→GROUPBY関数で条件を指定する場合、FILTER関数と組み合わせる必要があります。
SUMIFS関数であれば、わざわざ他の関数と組み合わせることなく、複雑な条件で計算できます。

③古いExcelでも使用可能
→GROUPBY関数は、Microsoft 365で使用可能な関数です。
古いバージョンのExcelでは使用できないため、その場合はSUMIFS関数を使うことになります。

④社内などで共有するファイルに使いやすい
→GROUPBY関数は比較的新しい関数のため、あまりなじみがない人も多いです。
SUMIFS関数のほうが認知度も高いため、共有するファイルではSUMIFS関数を使用するほうが分かりやすいケースもあります。

GROUPBYが向いているケース

GROUPBY関数が向いているのは、主に以下のようなケースです。

①集計表を作りたい
②グループ化した項目の増減に自動で対応できる
数式の追加・削減・修正は1セルで完結できる
複数の集計を一気に行うことができる

①集計表を作りたい
→一つの答えではなく、グループ化した項目別に集計したい場合は、GROUPBY関数のほうが向いています。

②グループ化した項目の増減に自動で対応できる
→あらかじめ範囲を設定しておけば、項目の増減や修正に自動で対応できます。
SUMIFS関数では手動で項目名を追加・削減・修正する必要がありましたが、GROUPBY関数ではその必要がありません。

③数式の追加・削減・修正は1セルで完結できる
→②と関連しますが、SUMIFS関数では項目追加や削減が発生した場合、手動で数式を入力する範囲を変更していたケースが多いと思います。
GROUPBY関数は配列関数となるため、1つのセルの数式を変更するだけで対応できてしまいます。

④複数の集計を一気に行うことができる
→SUMIFSでは合計、AVERAGEIFSでは平均、といった形で、SUMIFS関数だけではあくまで合計しか算出することはできません。
GROUPBY関数のいいところは、合計(SUM)や平均(AVERAGE)など複数の集計を一気に出すことができる点です。

GROUPBY関数の注意点

GROUPBY関数は便利ですが、SUMIFSとは仕様が大きく異なるため、いくつか注意点があります。
主な注意点をまとめました。

①Excel365でのみ利用できる
②条件指定はFILTER関数が必要
複数集計時は見出し(SUMなど)が自動表示される
スピルエラーが発生することがある

①Excel365でのみ利用できる
→GROUPBY関数は、Excel365でのみ利用できます。
古いバージョンのExcelでは使用できませんので、その場合はSUMIFS関数を使用しましょう。

②条件指定はFILTER関数が必要
→GROUPBY関数単体では、SUMIFSのように条件指定をすることはできません。
条件を指定する場合は、FILTER関数と組み合わせましょう。

複数集計時は見出し(SUMなど)が自動表示される
→集計方法を複数指定(SUMやAVERAGEなど)することはできますが、その場合「SUM」や「AVERAGE」など列見出しが表示されます。
どうしても消したい場合は、DROP関数を使用しましょう。

④スピルエラーが発生することがある
→GROUPBY関数は動的配列関数です。
出力範囲に入力値がある場合などはスピルエラーが発生します。

👉主なExcelのエラーと対処法については、以下の記事にまとめています。こちらもぜひチェックしてみてください。

よくある質問(FAQ)

GROUPBY関数はどのExcelで使えますか?

GROUPBY関数はMicrosoft 365で利用可能です。
古いバージョンのExcelでは使用できません。

GROUPBY関数で複数条件を指定できますか?

GROUPBY関数単体では条件指定はできません。
FILTER関数と組み合わせることで、条件を指定した集計が可能です。

GROUPBY関数とピボットテーブルの違いは何ですか?

GROUPBY関数は数式で集計表を作成できるのに対し、
ピボットテーブルは操作で集計を行います。
自動更新や柔軟な計算をしたい場合はGROUPBY関数が便利です。

GROUPBY関数で複数の集計はできますか?

可能です。
HSTACK関数を使うことで、
合計や平均など複数の集計を同時に表示できます。

まとめ

GROUPBY関数は、Excel365で使える新しい集計関数で、データを「項目ごとにまとめて一覧化できる」のが大きな特徴です。

今回のポイントを整理すると、以下の通りです。

・SUMIFSは「条件に一致する合計を出す関数」
・GROUPBYは「カテゴリごとに集計表を作る関数」
・集計表を作るならGROUPBYのほうが圧倒的に効率的
・条件指定はFILTER関数と組み合わせて使う

これまでSUMIFSで手作業のように集計していた作業も、GROUPBY関数を使えば1つの数式で自動化できます。

特に、

・項目が増減するデータを扱うとき
・集計表を頻繁に作るとき

には、大きな効果を発揮します。

Excel365を使っている方は、SUMIFSだけでなくGROUPBY関数も取り入れることで、集計作業の効率を大きく向上させることができます。

まずはシンプルな集計からでOKです。
ぜひ実務の中で一度使って、その便利さを体感してみてください。

最後まで読んでいただき、ありがとうございました。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

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