2016年03月06日

データの無い日付を表示させてみた(1日毎にグループ化) / ピボットテーブル / Excel

実はこのタイトルは正しくはなくて、「無い日付を表示させてみた」あたりが妥当なのだろうと思う。。。

さて、どういうことかと言うと、、

日付毎の何かのデータが入力されたテーブルがあって、それをデータソースにしたピボットテーブルを作ると、もちろんデータが無い日付は表示されない。それをデータ"0"で表示させたい時にどうするか。。。と言うことなのだけど、、
ピボットテーブルには「データの無いアイテムを表示する」という機能があるのだけど、思わずそれを使えばデータの無い日付も表示されるのでは!?と思ってしまう。。。
けど、結論を言うとそれでは表示されないのです。なぜなら、データの無い日付は「データの無いアイテム」ではなく「無い(架空の)アイテム」なんです。。。

アイテムというのは、
例えば、この商品名で言うと「生うどん」、「ラーメン」、「パスタ」、「生蕎麦」、「ソース焼きそば」の5つのことだ。
んで、ピボットテーブルで1月の販売された商品と数量を集計するとこうなる。
「生蕎麦」、「ソース焼きそば」は1月には販売されてない(データが無い)ので表示されない。
20160228_101.JPG

ここで、「データの無いアイテムを表示」させるとこうなる。
「ソース焼きそば」と「生蕎麦」の販売数は空白になっている。
20160228_102.JPG

これが、「データの無いアイテムを表示する」ってことだ。
実はこの店はこの5品目以外にも沢山の商品を扱っている。が、、そんなデータソースに存在していない商品名が「データの無いアイテムを表示する」で表示されるはずがない。
「データの無い日付」ってのはつまりそう言うことだ。

したら、どうすればいいかと言うと、グループ化で「日」毎にグループ化すればいいのでした!

なぜかというとExcelの日付と言うのはシリアル値(数値)をカレンダーの様に○○年○月○日と表示させているだけなので、最初の値(開始日)から最後の値(終了日)を設定した区間(日)でグループ化すれば途中の値(シリアル値)が飛んでいても(データの無い日付があっても)全ての日付がアイテムとして作り上げられる。そこで、「データの無いアイテムを表示する」を設定すれば「データの無い日付」が表示されることになるわけです。

では、早速やってみましょう!
こんな食品問屋の受注データのデータソースがあります。
20160228_01.JPG

ピボットテーブルで日付と受注数を集計します。
20160228_02.JPG

フィールドリストはこうなります。
20160228_03.JPG

ここで、2014年1月のデータを抽出してみます。
日付にカーソルを乗せて右クリして「日付フィルタ」の「指定の範囲内」を選択します。
20160228_04.JPG

「日付フィルタ」で"2014/1/1"から"2014/1/31"を範囲指定します。
20160228_05.JPG

するとこのように2014年1月のデータが集計されます。
20160228_06.JPG

例えばそれをグラフにしてみましょう。
「オプション」から「ピボットグラフ」を選択します。
20160228_07.JPG

「縦棒」を選択します。
20160228_08.JPG

するとこんなグラフになって、横軸の日付は連続してなく受注のある日付しか表示されません。
これでは、日毎の受注データの山積みの状況を見て取ることはできません。
20160228_09.JPG

例えば、ここで「データの無いアイテムを表示」させてみましょう。
日付にカーソルを置いて右クリして「フィールドの設定」を選択します。
20160228_10.JPG

「フィールドの設定」の「レイアウトと印刷」で「データの無いアイテムを表示する」にチェックを入れます。
20160228_11.JPG

でも、何も変わりません。。

ではここで「グループ化」をしてみましょう。
「オプション」、「グループ」から「グループフィールド」を選択します。
20160228_12.JPG

「グループ化」でまず「日」だけを選択して「日数」を"1"にし、「日」毎にグループ化させます。
20160228_13.JPG

次に、「月」、「年」も選択します。
20160228_14.JPG

「OK」すると「グループ化」した「開始日」と「最終日」の期間内が1日毎にグループ化されて、全ての日付が表示されました。
先ほど「データの無いアイテムを表示する」にチェックを入れていたので受注数量の無い日付も表示されたわけです。
20160228_15.JPG

行ラベルの「手動フィルター」で「年」を"2014年"に
20160228_16.JPG

「月」を"1月"にします。
20160228_17.JPG

すると、2014年1月1日から31日までがすべて行ラベルに表示されました。
20160228_18.JPG

んで、グラフはこうなりました。
20160228_19.JPG

不具合の話とか。。。
たまに、行ラベルにできた日付がテキストとして扱われる場合があって、並び替えをしても、1月1日が1月19日の後に並んでしまったり「手動フィルタ」でも「日付フィルタ」が使えなかったりします。原因は不明ですが、最悪の場合ピボットテーブルを作り直さないと直らない場合があります。
それからもう一つ、行ラベルに表示された日付はあくまでもシリアル値をグループ化してExcelが付けた範囲(1日)の名前です。なので、書式設定で"2014/1/1"のように表示をかえることはできません。。。ので、悪しからず。


関連ページ
日毎のデータを年月で集計してみた(グループ化)
日付でグループ化出来ない(グループフィールドボタンが押せない)
データの無いアイテムを表示してみた
無い(架空の)アイテムを表示してみた
空白セルに“0”表示させてみた


posted by haku1569 at 15:25| Excel ピボットテーブル | このブログの読者になる | 更新情報をチェックする
' + adSrc + '<' + '/body>'); d.close(); } loadAd(); window.setTimeout(loadAd, reloadSec * 1000); window.setTimeout(function() {adDiv.style.display = 'none'}, hideSec * 1000); }); }