shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】ピボットテーブルで、集計の軸(行や列)に影響しないデータ集計、表示の方法(応用)

Excelのピボットテーブルで、集計の軸(行や列)に影響しないデータ集計、表示の基本は前回のとおり。

shikumika.org

 

今回は、ピボットテーブルの軸で、一部はそのまま集計の軸(行や列)に利用するが、その他は利用しないなど、少し応用の方法。

上記で紹介のデータ集計、表示の基本は、集計の軸(行や列)の絞り込み条件をすべて無視する方法で、今回の方法は、絞り込み条件の一部はそのまま使いたい場合の方法

具体的には、実際に集計したい場面にならないとイメージが持ちづらいが、例えば次のアウトプットの結果(ピボットテーブル)で、「カウント/年代」は通常の集計。そのうち、ALL年代の場所は、「東京都」としての全体件数が表示されている状態。

アウトプット例(ピボットテーブルで、絞り込みをしたい条件も一部ある)

PowerPivotの集計例(集計の軸となる行や列に影響しないデータ集計)

手順

方法は、Excelのピボットテーブルで、集計の軸(行や列)に影響しないデータ集計の基本で、メジャー(数式)を少し変更する。

具体的には、メジャーを設定する次の画面での数式の内容を一部変更する。

CALCULATEで、ALLを使う

数式で、例えば年代というフィールドの絞り込みをしたくない場合は、次のように記載する。

=CALCULATE(COUNTROWS('範囲'),ALL('範囲'[年代]))

 ※ この例で、’範囲’は設定されているテーブル名、[年代]はフィールド名

 

慣れるまで少しだけ混乱するが、ピボットテーブルは、集計の軸(行や列)でデータ集計するので、ALL関数で絞り込み条件を解除するフィールドを設定する。

 

つまり、集計の軸(行や列)の全てを無視したい場合は、

 =CALCULATE(COUNTROWS('範囲'),('範囲'))

で、テーブル全体を指定していた。

今回は、フィールド名まで指定したパターン

 

また、集計の軸(行や列)で利用したい(絞り込みたい)フィールドだけを設定したい場合は、ALL関数ではなく、ALLEXCEPT関数で次のようにする。

=CALCULATE(COUNTROWS('範囲'),ALLEXCEPT('範囲','範囲'[年代]))

ALLEXCEPTで、指定したフィールドだけ利用するという意味。

個人的には、反対の反対のような設定で頭が混乱する。

 

個人的な理解だが、とりあえず、今回紹介した内容を次のように理解している。

  • CALCULATEは、ピボットテーブルの集計の軸(行や列)ではなく、”絞り込み条件”に設定した内容で集計できるという理解。
  • ALLで絞り込みしたくない範囲を設定する

 

以上、ピボットテーブルの軸で、一部はそのまま集計の軸(行や列)に利用するが、その他は利用しないなど、少し応用の方法でした。