こんにちは。シバマメです。
沢山商品があったりすると、どの商品に注目したら良いかわからなくなってしまいます。
よく言われるパレートの法則(80:20の法則)を使いましょう!
80:20の法則は何かというと、
例えば、商品の売上に例えると、
全体の20%の商品が売上の80%を占めているということです。
商品が多すぎて何を見たら良いのかわからないなあ
商品データを売上順に並べ替えて、右列に累計売上と上位何%を占めているかを計算するマクロを作成してみました。
↓のように、メロン5までの3アイテムで上位80%の売上ということがわかりますね。
使い方
1
- 下記のコードを個人用マクロブックに保存しましょう。
個人用マクロブック作成方法
2
- 対象のエクセル表を開いた状態でマクロを実行します。
F5 or ▶ボタンで実行
3
- 実行すると、何列目の数字に対して実行するか聞かれますので、
列数を数字で入力してください。
売上数字を売上良い順に並べ替えて、
その右に、累計売上額と上位何%かの列を追加します。 ※注意
対象の列が最終列でない場合は、
その右の列は累計売上額と上位何%の列に
上書きされてしまいます。
※条件
A1列~開始されている表であること。
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Sub Top80percent() ' 入力 Dim iKey As Long iKey = InputBox("降順にする列を選択") ' 最終行列取得 Dim maxRow As Long Dim maxCol As Long maxRow = Cells(Rows.Count, 1).End(xlUp).Row maxCol = Cells(1, Columns.Count).End(xlToLeft).Column ' 並べ替え Range("A1").Sort _ Key1:=Cells(1, iKey), _ Order1:=xlDescending, _ Header:=xlYes ' 累計列を追加 Cells(1, maxCol + 1).Value = "累計" Dim i As Long For i = 3 To maxRow Cells(i, maxCol + 1).Value = _ Application.WorksheetFunction.Sum(Range(Cells(3, iKey), Cells(i, iKey))) Next i ' 占有率を追加 Cells(1, maxCol + 2).Value = "占有率" For i = 3 To maxRow Cells(i, maxCol + 2).Value = Cells(i, maxCol + 1) / Cells(2, iKey) Cells(i, maxCol + 2).NumberFormatLocal = "0%" Next i End Sub |
↓よろしければクリックお願いします🌼
にほんブログ村
コメント