ABC分析とは?ExcelやQlikViewでの実現方法は?

ABC分析とは?ExcelやQlikViewでの実現方法は?

Pocket

ABC分析とは、商品や顧客を重要度によって分類する分析手法です。
たとえば、売上全体に大きな影響力を持つロイヤルユーザーを見つけたり、商品を売れ筋商品と、死に筋商品に分類したりするために使われます。
ここでは、ABC分析とはどのような分析手法なのか、またExcelやQlikViewでどのように実現するのか解説します。

Excelのサンプルのみ入手できればよいという方は、こちらをご覧いただくと早いです。Excelでの実現方法


ABC分析とは?

まず、ABC分析とはどんな分析手法なのか、またどのように実現するのか、商品の売上を例にとって説明します。
ABC分析をするには、以下の手順でチャートを作成します。下図はQlikViewの画面ですが考え方はExcelでもおなじです。
  • 商品ごとに売上を集計します。
  • 売上の大きい順に並べ換えます。
  • 各商品の売上が、全体に占める割合を求めます。
  • 上で求めた割合を、上位の商品から順に累積していきます。
  • この割合の累積が何%に達するかをもとに、商品をABCの三つのクラスに分類します。
abc-analysis-101
この例では上位19位までで売上全体の70%を、上位25位までで売上全体の80%を占めるようですので、たとえば以下のように分類します。
クラス分類商品
A売れ筋商品1位~19位の商品
B戦略商品20位~25位の商品
C死に筋商品26位以下の商品
これはあくまで一例です。
かならずしも、三つのクラスに分類する必要はありません。また、かならずしも70%と80%を境目にする必要もありません。
いくつに分類するか、何%を境目にするかはデータによって検討する必要があります。


パレートの法則

ABC分析と関連の深いものに、「パレートの法則」という法則があります。
これは80:20の法則とも呼ばれるもので、多くのデータでは原因の上位20%が、結果全体の80%を占めるという法則です。
たとえば、売上の80%は上位20%の得意先が生み出す、売上の80%は上位20%の売れ筋商品が生み出すといったことです。

ABC分析が重用される背景には、この「パレートの法則」があります。売上増加にせよ、コスト削減にせよ、改善効果の大きいものから着手するのが鉄則だと思います。
ABC分析は大勢に影響を与える少数の原因を見つけるために使われますが、これはつまり、見つかった少数の原因に対策を講じることで、小さい労力で大きな効果が得られる(と考えられる)ためです。

なお、ABC分析はパレート分析と呼ばれることがあります。また、ABC分析の結果をグラフ化した図をパレート図と呼ぶことがあります。
いずれも関連の深い用語ですので、一緒に覚えておくといいと思います。


ファイルのダウンロード

ここでは以下のファイルを使用しますので、ダウンロードしてください。
abc-analysis.zip
Zip形式ですので、ダウンロード後解凍してください。
以下のファイルが含まれています。
abc-analysis-102
ABC分析.xls
今回使用するデータです。
国ごとに、人口、国土、GDPのデータが格納されています。
abc-analysis-103はじめはサンプルのデータを使用しようと思っていたのですが、Wikipediaに掲載されていたABC分析の例が分かりやすかったため、これとおなじことをしてみましょう。
人口、国土、GDPについて上位何ヶ国が全体の何%を占めているのか計算してみます。

※このデータはThe World Bank(http://www.worldbank.org)がWeb上で公開しているデータに、独自の編集を加えたものです。Wikipediaに掲載されている例とは、データの出展元が違うため結果は異なります。


データの取り込み

ここからは、QlikViewでの実現方法を説明します。
Excelでの実現方法をお探しの方はこちらをご覧ください。Excelでの実現方法

それでは、QlikViewにデータを取り込んでみましょう。
まずはファイルを新規に作成し、[ロードスクリプトの編集]画面を起動します。
abc-analysis-104
ロードスクリプトの最下行にカーソルをあわせて、[テーブルファイル]ボタンをクリックします。
abc-analysis-105
「ABC分析.xls」を選択します。
abc-analysis-106
ファイルウィザードが起動します。
[テーブル名]が「ABC分析$」になっていることを確認し、[列見出し]を[先頭行]に変更します。
[終了]ボタンをクリックします。
abc-analysis-107
ロードスクリプトが作成されました。
[OK]ボタンをクリックします。
abc-analysis-108
データを取り込んでみましょう。
[リロード]ボタンをクリックします。
abc-analysis-109
ファイルを保存してください。
abc-analysis-110abc-analysis-111
データが取り込まれました。
[閉じる]ボタンをクリックしてください。
abc-analysis-112


チャートの作成

それではABC分析のためのチャートを作成してみましょう。
ここでは、GDPに関してABC分析をしてみます。

シートの余白で右クリックし[シートオブジェクトの追加]→[チャート]を選択します。
abc-analysis-201
[ストレートテーブル]を選択し、[次へ]ボタンをクリックします。
abc-analysis-202
軸項目には「国名」を設定します。
「国名」を選択後、[次へ]ボタンをクリックします。
abc-analysis-203
以下の数式を入力します。
Sum(GDP)
入力後[OK]ボタンをクリックします。
abc-analysis-204
これでGDPの集計値が作成されましたが、ABC分析のためにはあと二つ数式が必要です。
これらの数式は、いま作成した数式をコピーして作成します。

数式を右クリックして[コピー]を選択します。
abc-analysis-205
数式の余白で右クリックして[貼り付け]を選択します。
abc-analysis-206
同様にして、もう一度数式の余白で右クリックして[貼り付け]を選択します。
abc-analysis-207
これで三つの数式が作成されました。
二つ目の数式は割合の値にします。
二つ目の数式を選択し、画面中央の[相対値表示]にチェックを入れます。
abc-analysis-208
三つ目の数式は、割合の累積の値にします。
三つ目の数式を選択し、[相対値表示]にチェックを入れ、さらに画面左側の[すべて累積表示]も選択します。
以上で完成ですので、[完了]ボタンをクリックしてください。
abc-analysis-209
チャートが作成されました。
abc-analysis-210
チャートの表示を整えましょう。
まず、GDPの降順(大きい順)に並べ替えます。
GDPの集計値(左から二列目)のラベル部分をダブルクリックしてください。一度ダブルクリックすると昇順(小さい順)に並べ替えられますので、さらにもう一度ダブルクリックして降順に並べ替えてください。
abc-analysis-211
下図を参考に位置やサイズを調節してください。
abc-analysis-212以上でABC分析の最低限の設定は完了です。
これを見ると、上位二ヶ国(アメリカと中国)で、GDP全体の約34%を占めることがわかります。
少し下の方に目を移すと、上位13ヶ国(スペインまで)で、GDP全体の約70%を占めることがわかります。
※ちなみに、ここで使用しているGDPは、正確にはGDP PPP(国内の物価を考慮したGDP)なのですが、本題と関係ないため詳細は割愛します。

このままでもABC分析はできますが、上記のとおりABC分析では、上位n件で全体のn%を占めるという見方をするため、件数と件数の割合もあった方が分析しやすくなります。
それでは、チャートに件数を追加してみましょう。

チャートを右クリックして[プロパティ]を選択します。
abc-analysis-213
[数式]タブで[追加]ボタンをクリックします。
abc-analysis-214
以下の数式を入力します。
Count(GDP)
入力後[OK]ボタンをクリックします。
abc-analysis-215
いま作成した数式を複製します。
「Count(GDP)」を右リックして[コピー]を選択します。
abc-analysis-216
数式の余白で右クリックし、[貼り付け]を選択します。
abc-analysis-217
一つ目の「Count(GDP)」を選択し、画面左側の[すべて累積表示]を選択します。
abc-analysis-218
二つ目の「Count(GDP)」を選択して、[すべて累積表示]を選択し、さらに画面中央の[相対値表示]にもチェックを入れます。
以上で完成ですので、[OK]ボタンをクリックしてください。
abc-analysis-219
件数の累積と、その割合も追加できました。
abc-analysis-220

以上で今回のチュートリアルは終了です。
復習したい方や興味のある方は、ぜひ人口と国土についても、おなじようにABC分析のチャートを作成してみてください。
abc-analysis-221


補足説明


今回の結果に関する注意事項

さきほど、上位13ヶ国でGDP全体の70%を占めるといった結果を確認しましたが、これはあくまでGDPのデータが入手できた176ヵ国についての結果です。(今回使用しているExcelファイルの中には、GDPが空の国もあります。)
もし、GDPが空の国もふくめて、すべての国をチャート上に表示したいのであれば、件数を計算するときに「国名」などを使用してください。
変更前
Count(GDP)
変更後
Count(国名)
abc-analysis-303abc-analysis-304

なぜ件数の表示にCount関数を使用したのか

さきほど、件数を表示するためにCount関数を使用しましたが、チャートを見ると分かるとおり、これはチャートの行数を表示しているのとおなじです。
そのため、数式に「1」と指定してもおなじ結果が得られるように感じます。
変更前
Count(GDP)
変更後
1
abc-analysis-305
しかし、数式に「1」と指定するとその合計値も「1」となります。
チャート上部の灰色の部分が「1」になっています。
abc-analysis-306QlikViewは合計値を計算する際、数式の指定をもとにします。そのため、合計値を件数の合計値にしたい場合は、件数を求める数式(つまりCount関数)を指定する必要があります。


Excelでの実現方法

ABC分析は集計値や割合、累積を求められればよいため、Excelでも比較的簡単に実現できます。
Excelでの実現方法を知りたい方は、サンプルのZipファイルabc-analysis.zipで「ABC分析(Excel版)」のシートをご確認ください。
abc-analysis-301
各列には以下の数式が設定されています。
D列 割合
その行の値を、全体の合計で割って割合を求めています。
=C2/SUM(C$2:C$177)
E列 累積割合
一番上の行からその行までの合計を、全体の合計で割って累積の割合を求めています。
=SUM(C$2:C2)/SUM(C$2:C$177)
F列 累積件数
オートフィルで連番を作成しています。

G列 累積件数割合
一番上の行からその行までの件数を、全体の件数で割って累積件数の割合を求めています。
=COUNT(C$2:C2)/COUNT(C$2:C$177)

Excelでも比較的簡単に実現できるため、ABC分析のためだけにQlikViewを使う意味はあまりありません。しかし、QlikViewを使用すれば、データの絞り込みなども簡単にできます。
たとえば下図では「地域」のリストボックスを追加して、アジア圏に絞り込んだ結果を確認しています。
abc-analysis-302このように他のデータと関連付けて使用する場合は、やはりQlikViewが便利です。
まだQlikViewをお持ちでない方は、ぜひこれを機にダウンロードしてみてください。
QlikViewは以下のページから無料でダウンロードできます。(要ユーザー登録)
QlikView Personal Editionのダウンロード


振り返り

今回はABC分析についてご覧いただきました。以下に重要なポイントをまとめます。
  • ABC分析
    • ABC分析は、商品や顧客を重要度によって分類する分析手法。
    • 大勢に影響を与える少数の原因を見つけるために使用される。
  • パレートの法則
    • 80:20の法則とも呼ばれるもので、多くのデータでは原因の上位20%が、結果全体の80%を占めるという法則。
    • 例:売上の80%は上位20%の得意先が生み出す、売上の80%は上位20%の売れ筋商品が生み出す。
  • ABC分析の実現方法
    • 集計値の大きい順に並べ替え、集計値が全体に占める割合と、割合の累積を計算する。
    • 関連するQlikViewの機能
      • [相対値表示]
        有効にすると、全体に占める割合が表示される。
      • [すべて累積表示]
        有効にすると、チャートの上から累積した値が表示される。


最後に…

今回はABC分析についてご覧いただきました。
ABC分析は集計値や割合、累積を求められればよいため、Excelなどでも比較的簡単に実現できます。
しかし、QlikViewでも[相対値表示]や[すべて累積表示]を選択するだけですので、Excelで式を記述するよりもむしろ簡単だったのではないでしょうか。

前回ご紹介した「バスケット分析」もそうですが、「ABC分析」のような手法は、ほかにもいろいろあります。
Webで少し調べただけでも「RFM分析」「回帰分析」「デシル分析」「移動平均法」「度数分布」といった用語がでてくるかと思います。
これらの手法についても、機会があればまたこのブログで紹介したいと思います。

お疲れ様でした。