エクセルで構成比率や累積構成比(累積比率)を算出:ABC分析・パレート図に応用【コピペ用テンプレートあり】

はじめに
エクセルで、 構成比や累積構成比を算出し、する方法を紹介します。
下にテンプレート・サンプルのセルデータがあるので、
累積比率、累積構成比とは
構成比とは、 ある値の全体に対する割合 です。
名称 | 説明 | 数式表現 |
---|---|---|
構成比(構成比率) | ある値の全体に対する割合 | ある値 ÷ 全体の合計 |
累積構成比(累積比、累積比率) | ある値までの累積値(累計値)の割合 / 構成比の累積値(累計値) | ある値までの累積値 ÷ 全体の合計 |
いつ使うのか?
構成比や累積構成比(とくに後者)は、 ABC分析やパレート図の作成に応用できます。
ABC分析・パレート図とは
ABC分析とは、 全体を占める割合が大きいものから順にA, B, Cのランクを付ける手法 です。
データを昇順に並べ、累積構成比の値を算出し、その値を使ってランク付けします。
累積構成比をグラフ化したものがパレート図 です。
エクセルでの算出方法
以下の 全セルをコピー
ボタンをクリックし、エクセルの A1
セルに貼り付けると以下が算出されます。
H
列 : 構成比I
列 : 累積構成比J
列 : A, B, Cのランク付け( ABC分析 用)
次のような組合せグラフを作成すると パレート図 になります。
- 縦棒グラフ:
F
列 vs.G
列 - 折れ線グラフ:
F
列 vs.I
列
データを書き換える場合は、 A
, B
列を書き換え、 C
~ J
列をデータと同じ行までコピー(オートフィル)してください。
A | B | C | D | E | F | G | H | I | J | K | L | M | |
1 | データ | 並び替えデータ | ランク設定 | ||||||||||
2 | ラベル | X | 順位 | 順位 | =A2 | =B2 | 構成比 (%) | 累積構成比 (%) | ランク | ランク | 下限 | ||
3 | =G3/SUM(G:G)*100 | =SUM(G$3:G3)/SUM(G:G)*100 | =INDEX($L$3:$L$5,MATCH(I3,$M$3:$M$5)) | A | 0 | ||||||||
4 | a | 100 | =RANK.EQ(B4,B:B)+COUNTIF(B$1:B2,B4) | =ROW()-ROW(E$3) | =INDEX(A:A,MATCH($E4,$C:$C,0)) | =INDEX(B:B,MATCH($E4,$C:$C,0)) | =G4/SUM(G:G)*100 | =SUM(G$3:G4)/SUM(G:G)*100 | =INDEX($L$3:$L$5,MATCH(I4,$M$3:$M$5)) | B | 80 | ||
5 | b | 500 | =RANK.EQ(B5,B:B)+COUNTIF(B$1:B4,B5) | =ROW()-ROW(E$3) | =INDEX(A:A,MATCH($E5,$C:$C,0)) | =INDEX(B:B,MATCH($E5,$C:$C,0)) | =G5/SUM(G:G)*100 | =SUM(G$3:G5)/SUM(G:G)*100 | =INDEX($L$3:$L$5,MATCH(I5,$M$3:$M$5)) | C | 90 | ||
6 | c | 300 | =RANK.EQ(B6,B:B)+COUNTIF(B$1:B5,B6) | =ROW()-ROW(E$3) | =INDEX(A:A,MATCH($E6,$C:$C,0)) | =INDEX(B:B,MATCH($E6,$C:$C,0)) | =G6/SUM(G:G)*100 | =SUM(G$3:G6)/SUM(G:G)*100 | =INDEX($L$3:$L$5,MATCH(I6,$M$3:$M$5)) | ||||
7 | d | 1000 | =RANK.EQ(B7,B:B)+COUNTIF(B$1:B6,B7) | =ROW()-ROW(E$3) | =INDEX(A:A,MATCH($E7,$C:$C,0)) | =INDEX(B:B,MATCH($E7,$C:$C,0)) | =G7/SUM(G:G)*100 | =SUM(G$3:G7)/SUM(G:G)*100 | =INDEX($L$3:$L$5,MATCH(I7,$M$3:$M$5)) | ||||
8 | e | 300 | =RANK.EQ(B8,B:B)+COUNTIF(B$1:B7,B8) | =ROW()-ROW(E$3) | =INDEX(A:A,MATCH($E8,$C:$C,0)) | =INDEX(B:B,MATCH($E8,$C:$C,0)) | =G8/SUM(G:G)*100 | =SUM(G$3:G8)/SUM(G:G)*100 | =INDEX($L$3:$L$5,MATCH(I8,$M$3:$M$5)) | ||||
9 | |||||||||||||
10 |
算出手順
構成比と累積構成比の算出、
1. データを並び替え
データを昇順に並び替えるため、以下の処理を行います。
- i. データを降順で順位付け
- ii. 順位に従って、データを表示
i. データを降順で順位付け
RANK.EQ()
、COUNTIF()
関数を使用して、各データの順位を算出します。
RANK.EQ()
関数 : データの降順の順位を算出。ただし同順位があると重複してしまう。COUNTIF()
関数 : 重複数をカウント。同順位があるときの重複を回避するために使用。
RANK.EQ関数
第2引数の範囲のデータ列中で、第1引数のデータが何番目に位置するかを算出。
同順位の場合は、同順位内の最上位の値が返される。
第3引数は0または1で、降順または昇順のどちらで順位付けするかを設定。
例:
=RANK.EQ(B2,B:B)
- 第1引数 (
B2
): 順位付けするデータ- 第2引数 (
B:B
): 順位付けするデータ列の全体範囲- 第3引数 : 降順(
0
) or 昇順(1
) を設定(省略時は降順)
ii. 順位に従って、データを表示
MATCH()
、INDEX()
関数を使用して、順位に従ってデータを表示します。
MATCH()
関数 : iで算出した順位が、1のとき, 2のとき,... の行番号を取得。INDEX()
関数 : 取得した行番号のデータを表示。
MATCH関数
指定した範囲の中で検索し、最初にヒットした相対位置を返す。
例:
=MATCH(3,$C:$C,0)
- 第1引数 (
3
): 検索値(必須)- 第2引数 (
$C:$C
): 検索範囲(必須)- 第3引数 (
0
): 照合の型を0
,-1
,1
で指定(オプション)
0
: 完全一致したセルを返す1
: 検索値以下の最大値のセルを返す(デフォルト)-1
: 検索値以上の最小値のセルを返す
INDEX関数
指定した範囲の中で、m番目(m行n列目)の値を返す
(m, nはそれぞれ第1引数、第2引数で指定)。例:
=INDEX($A:$A,2))
A
列の2行目の値を返す
- 第1引数 (
$A:$A
): 抽出する範囲(必須)- 第2引数 (
2
): 範囲から抽出する要素番号・行番号(必須)- 第3引数 : 範囲から抽出する列番号(オプション)
2a. 構成比を算出
構成比は以下によって算出します。
構成比
= データ値
/ データの合計
データの合計
は、SUM()
関数を使用し 全ての データ値
を加算します。
2b. 累積構成比を算出
累積構成比は以下によって算出します。
累積構成比
= ある値までの累積値
/ データの合計
ある値までの累積値
は、SUM()
関数を使用し 最初 ~ ある値 の データ値
を加算します。 データの合計
は、SUM()
関数を使用し 全ての データ値
を加算します。
3. A, B, Cのランク付け
MATCH()
、INDEX()
関数を使用して、 ランク設定
欄の値を紐づけし、
MATCH()
関数 : 累積構成比の値と、ランク設定
欄の下限
値を比較し、行番号を取得。- ※ 第3引数を空(または
1
設定)にすると、下限
値 以下 の行番号が取得される
- ※ 第3引数を空(または
INDEX()
関数 : 取得した行番号のデータを表示。