SUMIF や COUNTIF を使わずに項目ごとの集計をする (GROUPBY 関数) 1 で基本をご紹介した GROUPBY 関数の、並べ替えとフィルターについてご紹介します。

GROUPBY 関数は、テーブルなどの表のデータをグループごとにまとめ、合計や個数などを集計する関数です。
ピボットテーブルを作成せずに数式でグループごとの集計を容易に行えます。

 たとえば下図では、表の [日付] と [サイズ] の組み合わせごとの出荷数量の合計を算出しています。
4/3 の S2 は出荷数量の合計が 20 になっていることがわかります。
また、[日付] の昇順、[サイズ] の昇順に並んでいます

 

GROUPBY 関数の構文

 必須なのは先頭の 3 つです。なにごとに、どの列を、どのように集計するか指定します。
先ほどの数式では、第 4 引数に「3」を指定して見出しを表示し、第 5 引数に「1」を指定して総計のみを表示しています。

=GROUPBY(行フィールド, 値, 関数, [フィールド ヘッダー], [集計レベル] , [並べ替え順], [フィルター配列], [列の関係])

  引数 説明
1 行フィールド (必須) 何ごとにまとめるのか、行のグループ化に使う列を指定する。複数列の指定も可能。
2 値 (必須) 集計する列を指定する。合計や件数を求めるデータが格納されている列。複数列の指定も可能。
3 関数 (必須) SUM、COUNT、AVERAGE、PERCENTOF などを使って、値の集計方法を指定する。
4 [フィールド ヘッダー] 見出し行の表示 / 非表示を指定する。 3 を指定すると、見出しが含まれている場合、表示されます。
5 [集計レベル] 総計や小計の表示 / 非表示を指定する。
6 [並べ替え順] 結果の並べ替え順 (昇順 / 降順) を列の位置で指定する。「-1」だと 1列目を降順で並べ替えられる。 複数列をキーにする場合は、{-1,-2} のように括弧で指定する。
7 [フィルター] 特定のエリアなど、「エリア列が "エリアA"」のように行を絞り込む条件を指定する。
8 [列の関係] 階層的に並べ替えして表示するかどうかを指定する。0 を指定、または省略すると、行の項目を階層的に並べ替えられる。下位の項目も並べ替えられ、[並べ替え順]が指定されていない列は昇順となる。1を指定すると、指定された並べ替え順のみが適用され、小計を表示できない。

 

並べ替えを指定する

先ほどの数式を編集して、第 6 引数に「-2」を指定して、2列目 ([サイズ]) の降順にします。 第 8 引数の列の関係が省略されており、階層的に並べられるため、[日付] の昇順で並び、同じ日付でまとまります。

第 8 引数が省略か「0」のとき↓

指定された並べ替え順 (ここでは、[サイズ] の昇順) のみを適用したい場合は、第 8 引数を「1」にします。

フィルターで絞り込む 

第 7 引数に、比較演算子を使った論理式を用いて、フィルター処理を指定できます。
たとえば下図では、サイズが S1 以外に絞り込んでいます。(もちろん = なら等しい と指定できます。)

 


GROUPBY 関数は、項目ごとの集計を行うときに使える関数です。
引数による指定次第で、並べ替えや見出し、小計や合計の表示なども設定できるため、テーブルのデータをコンパクトにまとめた表の作成などを効率よく行えます。

1 つの数式で全項目ごとの集計結果を算出できるため、項目の増減や変更に対応しやすいのが特徴で、ピボットテーブルを作成せずに数式を使って更新に対応しやすいグループごとの集計表を容易に作成できます。
とはいえ、引数の種類が多くて慣れるまではちょっとてこずるかもしれません。いろいろ試してみてください。

石田 かのこ