● アプローチの違い
意思決定や分析をするにはクロス集計表(静的な表)が欠かせません。
もちろんリスト形式の表(動的な表)も必要ですが、クロス集計表を作ることが、まずもって絶対的に必要なこととなります。
なのでクロス集計表は、データ集計における、ある意味「最終到達点」「最終形」であるとも言えます。
それを念頭に入れて頂いた上で・・・
まずExcelでクロス集計表を作るためのアプローチには2つあります。
*******************
1つはシートにクロス集計表を直接作ってしまう方法です。
列の見出し、行の見出しを自由に決めて、「目的のもの」、をいきなり作ってしまう方法です。
「最終形」から先に作ってしまうアプローチです。
データ管理の世界標準ルールからすると、「不自然な流れ・逆方向から」のアプローチとなります。
Excelで行う集計をこのアプローチで行う場合は、『 Excelを「単なる紙と電卓の延長」として使う使い方』になります。
Excelのシートを「紙」、Excel自体を「高機能電卓」と見たてて処理する方法です。
なお、クロス集計表はもともと最終形態のため、並べ替えなどがあまり意味をなさなくなりがちです。またその表を作ったプロセスが見えにくいです。
もともとが最終形なので、変形や発展がさせにくいため、もし複雑な条件での集計の自動化をしたい場合は、ExcelVBAプログラミングにて、途方もないプログラム量を必要とします。
このアプローチの場合、たとえば担当者別の毎月の売上を記録する場合は・・・、
・まず1か月分のデータとして、1つのシートの中に、
・行見出し(行の名前)には、各担当者の名前を縦方向に並べ、
・列見出し(列の名前)には、日付と曜日を横方向に並べていきます。
・1つのセルには、その日の合計売上を記録して、
・そしてそのシートを12か月分作り、
・最後は「串刺し集計」などで集計する・・・、
というパターンです。
12か月分で12枚のシートを使う、といった感じです。
これこそ、シートを「紙」と見立てて集計しているもっとも最たる例です。
そしてこの状態から、
・「じゃあこんどは一年間の週ごとの売上にまとめ直してくれない?」とか、
・「各担当者の一番売れた日、一番売れた週を出して」
・「一週間ごとじゃなくて、キャンペーン中の売上も知りたいな」
・「一番売れた日に何を売ったのか知りたんだけど・・・」
・「金額じゃなくて数量と単価も知りたいな」
・「商品のカテゴリと売った人との関係性を見たいな」
といったご要望に応えるのはなかなか至難の業です。
再度、その都度、作表と計算をやりなおすしかありません。
もしくはExcelVBAでプログラムを組んで、非常に大量のプログラムコードを書くしかありません。
ということになりますと、このアプローチ(使い方)がなんとなく不利に思えてしまかもしれませんが、そうではありません。
このアプローチは、定型的な集計よりも、
・ちょっとイレギュラーなクロス集計表を作る場合や、
・データ蓄積とは無縁なクロス集計表を作る時、
・とにかくざっとでいいので早くアバウトの整理をしたい、
・Web記事などの外部組織の少ない量の数値を使ってクロス集計表を作りたい、
等々の場合に威力を発揮します。
シートにクロス集計表を直接作ってしまうアプローチについてはひとまず以上です。
*******************
これ対して2つ目のアプローチは、いきなりクロス集計表から作らずに、先にリスト形式の表を作る方法です。クロス集計表を作るには、そのリスト形式の表のデータをもとに、Excelの「自動クロス集計表生成機能(SQL機能やピボットテーブル)を使います。
いきなり「最終形」にはいかずに、動的な表(日々の売上などとして)を準備段階として先に作成します。
データ管理の世界標準ルールからすると、「自然な流れ・正方向」なアプローチとなります。
Excelで行う集計のすべてをこのアプローチで行う場合は、『 Excelを「真のコンピュータ」として使う使い方』になります。
ちょっと上手い例えが見つからないのですみませんが、Excelのシートを「自動データ蓄積ユニット」、Excel自体を「システム」と見たてて処理する方法です。
「自動クロス集計表生成機能(SQL機能やピボットテーブル)といった、超優れた出来合い集計機能を使うため、VBAプログラムの量や複雑な関数、セルリンク等の嵐、を激減させることができます。
リスト形式の表には大量の売上データや顧客データなどが記録されます。
イレギュラーな集計は苦手ですが、定型的な集計は得意です。
この使い方では常にリスト形式の表とクロス集計表を行ったり来たりするので、クロス集計表を作った時のプロセスを多少見やすくすることも可能です。
例えばこのアプローチで担当者別の毎月の売上を記録する場合は、次のような感じになります。
・1つのシートに、「連番」「売上日」「売上時刻」「担当者名」「金額」などの列名を作ります
・誰から何かを売ったときにその都度、1行ずつ、記録していきます。
・ひとまず毎日の合計をする必要はありません。売れたときに売れただけ記録するだけで、あとは放置でOKです。
・日付があるので月ごとに区切る必要はありません。
・1年間分でも2年間分でも、途切れることなく、1つのシートに毎日コツコツ、誰かが何かを売るたびに売り上げを記録するだけです。
・集計にはピボットテーブルを使います。
この方法ですと、すでに「ピボットテーブル」という自動集計機能がExcelについていますのでそれを使います。
それを使うと・・・
・週ごとの売上
・7日ごとの売上
・曜日ごとの売上
・時間帯ごとの売上
・担当者別の上記全部の売上
・担当者別の一番売れた日と売上の算出
・各種構成比、平均値
・週当たりの単価、3日あたりの単価、
といったものをその都度、数秒から数分で、即座に集計することができます。
また、
・「じゃあこんどは一年間の週ごとの売上にまとめ直してくれない?」とか、
・「各担当者の一番売れた日、一番売れた週を出して」
・「一番売れた日に何を売ったのか知りたんだけど・・・」
・「金額じゃなくて数量と単価も知りたいな」
・「商品のカテゴリと売った人との関係性をみたいな」
・一週間ごとじゃなくて、キャンペーン中の売上も知りたいな
といった追加のご要望に応えるのも簡単です。
・「じゃあこんどは一年間の週ごとの売上にまとめ直してくれない?」
→何もしなくても数十秒ですぐ集計できます。
・「各担当者の一番売れた日、一番売れた週を出して」
→同上です。
・「一週間ごとじゃなくて、キャンペーン中の売上も知りたいな」
→何もしなくても数十秒~数分で出せます。
・「一番売れた日に何を売ったのか知りたんだけど・・・」
→今後、表に「売れた商品名」列を追加して記録して自動集計しなおすだけです。
・「金額じゃなくて数量と単価も知りたいな」
→今後、表に「数量」の列を追加して自動集計しなおすだけです。
・「商品のカテゴリと売った人との関係性を見たいな」
→別シートに「商品名」「カテゴリ」「特性」「色」「定価」などを記録した表をつくり、もとの売上表とをドラッグで掛け合わせるだけです。それを自動集計させれば完了です。担当者×色別の売上や、担当者×「特性」×期間別の売上、といった売り上げも簡単に出せるようになります。
そのほか、
『「年ごと」「月ごと」じゃなくて「年度ごと」「月度ごと」の集計もしたい』となったときでも、
たとえば・・・
・元のリスト形式の表に「年度」「月度」という列を設けて、
・日付けの列の値をもとに、関数によって年度算出・月度算出すれば
数分で出せるようになります。
このくらいの追加のご要望でしたら、ExcelVBAプログラムは1行も書く必要はありません。
なんとなくすごく便利な気がしますけど、このアプローチでは
・ちょっとイレギュラーなクロス集計表を作る場合や、
・データ蓄積とは無縁なクロス集計表を作る時、
・とにかくざっとでいいので早くアバウトの整理をしたい、
・Web記事などの外部組織の少ない量の数値を使ってクロス集計表を作りたい、
といったクロス集計表の作成はできません。
そういうデメリットがあります。
以上、「先にリスト形式の表を作ってクロス集計表の作成は自動作成機能にまかせるアプローチ」の概要でした。
*******************
ひとまず以上ですが、いずれもクロス集計表を作ることは同じなので、意思決定や文系をするにはどちらも有用です。
ただ、後者のほうが・・・、例えば、定型的なビジネス集計の場合、短時間のうちに作れるクロス集計表の量がハンパな量ではないので、自社内のデータの整理や集計の基盤としたほうが効率的だと思います。
後者をベースに、前者を必要な場面だけに上手に使う、というのが一般的なお仕事でExcelを効率良く使える方法だと思います。