📋 このステップで学ぶこと
- パレートの法則(80:20の法則)の本質
- ABC分類の基準と判断方法
- 在庫管理への応用と最適化
- 顧客管理への応用と施策
- PythonとExcelでの実装
- よくある間違いと対策
学習時間の目安: 2.5時間
📌 前のステップとのつながり
STEP 36(トレンド分析と予測精度の評価)では、予測の精度を評価する方法を学びました。
このSTEP 37では、「何を重点的に管理すべきか」を決める手法を学びます。
予測精度を高めるべき商品の優先順位付けにも、ABC分析は役立ちます。
次のSTEP 38(在庫最適化)では、ABC分析の結果を活かして
具体的な在庫量の最適化を行います。
🔍 1. パレートの法則とは
なぜパレートの法則を学ぶのか?
💡 限られたリソースを最大限に活かすため
よくある問題:
・100商品すべてを同じように管理している
・200人の顧客に同じ対応をしている
・すべてのタスクを同じ優先度で処理している
結果:
・リソースが分散して効果が出ない
・重要な商品が欠品する
・VIP顧客が離脱する
解決策: ABC分析
重要な少数に注力することで、
少ない労力で大きな成果を得られる!
80:20の法則(パレートの法則)
📌 少数が全体の大部分を占める経験則
イタリアの経済学者ヴィルフレド・パレートが発見
ビジネスでの例:
・売上の80%は、上位20%の商品から生まれる
・利益の80%は、上位20%の顧客がもたらす
・クレームの80%は、20%の原因から来る
在庫管理での例:
・在庫金額の80%は、20%の品目が占める
・出荷量の80%は、20%の商品で占められる
その他の例:
・ウェブアクセスの80%は、20%のページに集中
・バグの80%は、20%のコードに存在
・仕事の成果の80%は、20%の時間で生まれる
重要な気づき:
すべてを均等に扱うのではなく、
重要な少数に注力すべき!
ABC分類の基準
⚠️ 重要度に応じて3つのグループに分類
| 分類 |
累積比率 |
構成比 |
管理レベル |
| A(超重要) |
0〜70% |
約10〜20% |
厳密管理(毎日) |
| B(重要) |
70〜90% |
約20〜30% |
定期管理(週次) |
| C(普通) |
90〜100% |
約50〜70% |
簡易管理(月次) |
分類の目的:
限られたリソース(時間・人・お金)を最も効果的に配分する!
📊 2. ABC分析の実装
分析の手順
📌 ABC分析の5ステップ
ステップ1: データを売上(金額)の降順にソート
ステップ2: 累積売上を計算
ステップ3: 累積比率を計算(累積売上 ÷ 総売上 × 100)
ステップ4: 累積比率に基づいてABC分類
ステップ5: 分類別の集計と可視化
Pythonでの完全実装
# ============================================
# ABC分析の完全実装
# ============================================
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# サンプルデータ: 商品別売上(パレート分布)
np.random.seed(42)
n_products = 100
product_ids = [f’商品{i:03d}’ for i in range(1, n_products + 1)]
# パレート分布で売上を生成
sales = np.random.pareto(a=1.5, size=n_products) * 100 + 50
sales = np.sort(sales)[::-1] # 降順にソート
df = pd.DataFrame({
‘商品ID’: product_ids,
‘売上’: sales
})
# ============================================
# ABC分析の実行
# ============================================
# 1. 売上の降順にソート
df = df.sort_values(‘売上’, ascending=False).reset_index(drop=True)
# 2. 累積売上を計算
df[‘累積売上’] = df[‘売上’].cumsum()
# 3. 累積比率を計算
total_sales = df[‘売上’].sum()
df[‘累積比率’] = df[‘累積売上’] / total_sales * 100
# 4. ABC分類
def classify_abc(cumulative_ratio):
“””累積比率に基づいてABC分類”””
if cumulative_ratio <= 70:
return 'A'
elif cumulative_ratio <= 90:
return 'B'
else:
return 'C'
df['分類'] = df['累積比率'].apply(classify_abc)
# 5. 各分類の集計
summary = df.groupby('分類').agg({
'商品ID': 'count',
'売上': 'sum'
}).rename(columns={'商品ID': '商品数'})
summary['商品数比率'] = summary['商品数'] / len(df) * 100
summary['売上比率'] = summary['売上'] / total_sales * 100
# 結果表示
print("=" * 50)
print("【ABC分析結果】")
print("=" * 50)
print()
print(summary.round(1))
print()
# パレートの法則の確認
a_products = summary.loc['A', '商品数比率']
a_sales = summary.loc['A', '売上比率']
print(f"【パレートの法則の確認】")
print(f"上位 {a_products:.0f}% の商品が、売上の {a_sales:.0f}% を占める")
print()
# 詳細表示(各分類の上位5商品)
for category in ['A', 'B', 'C']:
print(f"【{category}ランク商品(上位5件)】")
print(df[df['分類'] == category].head().to_string(index=False))
print()
# ============================================
# パレート図の作成
# ============================================
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# 1. パレート図(メイン)
ax1 = axes[0, 0]
x = np.arange(len(df))
# 棒グラフ(個別売上)
colors_bar = df['分類'].map({'A': '#ff6b6b', 'B': '#ffd93d', 'C': '#6bcb77'})
ax1.bar(x, df['売上'], color=colors_bar, alpha=0.7, width=1.0)
# 折れ線(累積比率)
ax1_twin = ax1.twinx()
ax1_twin.plot(x, df['累積比率'], color='navy', linewidth=2.5, label='累積比率')
# 境界線
ax1_twin.axhline(y=70, color='red', linestyle='--', linewidth=1.5, label='A-B境界(70%)')
ax1_twin.axhline(y=90, color='orange', linestyle='--', linewidth=1.5, label='B-C境界(90%)')
ax1.set_xlabel('商品(売上順)', fontsize=11)
ax1.set_ylabel('売上(万円)', fontsize=11)
ax1_twin.set_ylabel('累積比率(%)', fontsize=11)
ax1.set_title('パレート図', fontsize=13, fontweight='bold')
ax1_twin.legend(loc='center right')
ax1.grid(alpha=0.3, axis='y')
# 2. ABC分類別の商品数比率
ax2 = axes[0, 1]
colors_pie = ['#ff6b6b', '#ffd93d', '#6bcb77']
wedges, texts, autotexts = ax2.pie(
summary['商品数'],
labels=['A(超重要)', 'B(重要)', 'C(普通)'],
autopct='%1.1f%%',
colors=colors_pie,
startangle=90,
explode=(0.05, 0, 0)
)
for autotext in autotexts:
autotext.set_fontweight('bold')
autotext.set_fontsize(11)
ax2.set_title('ABC分類別 商品数比率', fontsize=13, fontweight='bold')
# 3. ABC分類別の売上比率
ax3 = axes[1, 0]
wedges, texts, autotexts = ax3.pie(
summary['売上'],
labels=['A(超重要)', 'B(重要)', 'C(普通)'],
autopct='%1.1f%%',
colors=colors_pie,
startangle=90,
explode=(0.05, 0, 0)
)
for autotext in autotexts:
autotext.set_fontweight('bold')
autotext.set_fontsize(11)
ax3.set_title('ABC分類別 売上比率', fontsize=13, fontweight='bold')
# 4. 商品数 vs 売上の比較
ax4 = axes[1, 1]
x_pos = np.arange(3)
width = 0.35
bars1 = ax4.bar(x_pos - width/2, summary['商品数比率'], width,
label='商品数比率', color='steelblue', alpha=0.7)
bars2 = ax4.bar(x_pos + width/2, summary['売上比率'], width,
label='売上比率', color='coral', alpha=0.7)
ax4.set_xlabel('分類', fontsize=11)
ax4.set_ylabel('比率(%)', fontsize=11)
ax4.set_title('商品数 vs 売上の比較', fontsize=13, fontweight='bold')
ax4.set_xticks(x_pos)
ax4.set_xticklabels(['A', 'B', 'C'])
ax4.legend()
ax4.grid(axis='y', alpha=0.3)
# 値を表示
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
ax4.text(bar.get_x() + bar.get_width()/2., height + 1,
f'{height:.1f}%', ha='center', va='bottom', fontsize=10)
plt.tight_layout()
plt.savefig('abc_analysis.png', dpi=150, bbox_inches='tight')
plt.show()
print("→ グラフを 'abc_analysis.png' に保存しました")
Excelでの実装手順
💡 Excelで ABC分析を行う手順
データの準備:
A列: 商品ID
B列: 売上
| 手順 |
操作 |
| 1. 降順ソート |
B列で降順にソート (データ → ソート → 降順) |
| 2. 累積売上 |
C2: =B2 C3: =C2+B3(下にコピー) |
| 3. 累積比率 |
D2: =C2/SUM($B$2:$B$101)*100(下にコピー) |
| 4. ABC分類 |
E2: =IF(D2<=70,"A",IF(D2<=90,"B","C")) |
| 5. パレート図 |
挿入 → グラフ → 組み合わせ 棒グラフ+折れ線(第2軸) |
🎯 3. 在庫管理への応用
ABC分類別の在庫管理方針
⚠️ 分類別に異なる管理方針を設定
| 項目 |
Aランク |
Bランク |
Cランク |
| 在庫チェック |
毎日 |
週1回 |
月1回 |
| 安全在庫 |
多め |
適正 |
最小限 |
| 発注方式 |
定点発注 |
定期発注 |
まとめ発注 |
| 需要予測 |
詳細分析 |
標準分析 |
簡易推定 |
| 欠品対応 |
即日対応 |
翌日対応 |
次回発注時 |
在庫分析の実装
# ============================================
# 在庫管理へのABC分析応用
# ============================================
# 在庫データの追加
df_inventory = df.copy()
df_inventory['在庫金額'] = df_inventory['売上'] * np.random.uniform(0.3, 0.5, len(df))
df_inventory['在庫回転率'] = df_inventory['売上'] / df_inventory['在庫金額']
# ABC分類別の在庫管理指標
inventory_summary = df_inventory.groupby('分類').agg({
'商品ID': 'count',
'売上': 'sum',
'在庫金額': 'sum',
'在庫回転率': 'mean'
}).rename(columns={'商品ID': '商品数'})
inventory_summary['平均売上'] = inventory_summary['売上'] / inventory_summary['商品数']
inventory_summary['平均在庫'] = inventory_summary['在庫金額'] / inventory_summary['商品数']
print("=" * 50)
print("【在庫管理指標(ABC別)】")
print("=" * 50)
print()
print(inventory_summary.round(2))
print()
# 在庫最適化の提案
print("=" * 50)
print("【在庫最適化の提案】")
print("=" * 50)
print()
for category in ['A', 'B', 'C']:
data = inventory_summary.loc[category]
print(f"■ {category}ランク商品")
print(f" 商品数: {data['商品数']:.0f}点")
print(f" 売上合計: {data['売上']:.1f}万円")
print(f" 在庫金額: {data['在庫金額']:.1f}万円")
print(f" 在庫回転率: {data['在庫回転率']:.1f}回/年")
if category == 'A':
print(" → 【厳格管理】欠品厳禁、安全在庫多め")
elif category == 'B':
print(" → 【標準管理】定期発注、適正在庫維持")
else:
print(" → 【簡易管理】在庫削減、SKU整理検討")
print()
# ============================================
# 在庫分析の可視化
# ============================================
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
colors = ['#ff6b6b', '#ffd93d', '#6bcb77']
# 1. ABC別 売上 vs 在庫金額
ax1 = axes[0]
x_pos = np.arange(3)
width = 0.35
bars1 = ax1.bar(x_pos - width/2, inventory_summary['売上'], width,
label='売上', color='steelblue', alpha=0.7)
bars2 = ax1.bar(x_pos + width/2, inventory_summary['在庫金額'], width,
label='在庫金額', color='coral', alpha=0.7)
ax1.set_xlabel('分類', fontsize=12)
ax1.set_ylabel('金額(万円)', fontsize=12)
ax1.set_title('売上 vs 在庫金額', fontsize=13, fontweight='bold')
ax1.set_xticks(x_pos)
ax1.set_xticklabels(['A', 'B', 'C'])
ax1.legend()
ax1.grid(axis='y', alpha=0.3)
# 2. ABC別 在庫回転率
ax2 = axes[1]
bars = ax2.bar(['A', 'B', 'C'], inventory_summary['在庫回転率'],
color=colors, alpha=0.8, edgecolor='black')
ax2.set_xlabel('分類', fontsize=12)
ax2.set_ylabel('在庫回転率(回/年)', fontsize=12)
ax2.set_title('在庫回転率の比較', fontsize=13, fontweight='bold')
ax2.grid(axis='y', alpha=0.3)
for bar in bars:
height = bar.get_height()
ax2.text(bar.get_x() + bar.get_width()/2., height + 0.1,
f'{height:.1f}', ha='center', va='bottom', fontsize=11, fontweight='bold')
# 3. 在庫効率マトリクス
ax3 = axes[2]
for i, category in enumerate(['A', 'B', 'C']):
data = inventory_summary.loc[category]
ax3.scatter(data['売上'], data['在庫金額'],
s=data['商品数'] * 20, c=colors[i],
label=f'{category}ランク', alpha=0.7, edgecolors='black')
ax3.set_xlabel('売上合計(万円)', fontsize=12)
ax3.set_ylabel('在庫金額(万円)', fontsize=12)
ax3.set_title('在庫効率マトリクス\n(円の大きさ=商品数)', fontsize=13, fontweight='bold')
ax3.legend()
ax3.grid(alpha=0.3)
plt.tight_layout()
plt.savefig('inventory_abc.png', dpi=150, bbox_inches='tight')
plt.show()
print("→ グラフを 'inventory_abc.png' に保存しました")
👥 4. 顧客管理への応用
顧客ABC分類の目的
💡 顧客をABC分類して優先度をつける
顧客ABC分析の目的:
・優良顧客(VIP)の特定
・リソースの最適配分
・顧客別マーケティング戦略
| 分類 |
特徴 |
施策 |
| A顧客(VIP) |
売上の70% 全顧客の約10〜20% |
専任担当、月次訪問 特別割引、VIPイベント |
| B顧客(重要) |
売上の20% 全顧客の約20〜30% |
四半期フォロー A顧客への育成プログラム |
| C顧客(一般) |
売上の10% 全顧客の約50〜70% |
メール/SNS対応 効率化・自動化 |
顧客分析の実装
# ============================================
# 顧客ABC分析
# ============================================
# 顧客データ生成
n_customers = 200
customer_ids = [f'顧客{i:04d}' for i in range(1, n_customers + 1)]
customer_sales = np.random.pareto(a=2, size=n_customers) * 50 + 10
customer_sales = np.sort(customer_sales)[::-1]
df_customer = pd.DataFrame({
'顧客ID': customer_ids,
'年間売上': customer_sales
})
# ABC分類
df_customer = df_customer.sort_values('年間売上', ascending=False).reset_index(drop=True)
df_customer['累積売上'] = df_customer['年間売上'].cumsum()
total_customer_sales = df_customer['年間売上'].sum()
df_customer['累積比率'] = df_customer['累積売上'] / total_customer_sales * 100
df_customer['分類'] = df_customer['累積比率'].apply(classify_abc)
# 集計
customer_summary = df_customer.groupby('分類').agg({
'顧客ID': 'count',
'年間売上': ['sum', 'mean']
}).round(1)
customer_summary.columns = ['顧客数', '売上合計', '平均売上']
customer_summary['顧客数比率'] = customer_summary['顧客数'] / len(df_customer) * 100
customer_summary['売上比率'] = customer_summary['売上合計'] / total_customer_sales * 100
print("=" * 50)
print("【顧客ABC分析結果】")
print("=" * 50)
print()
print(customer_summary.round(1))
print()
# 具体的な施策提案
print("=" * 50)
print("【顧客別マーケティング戦略】")
print("=" * 50)
print()
strategies = {
'A': {
'label': 'VIP',
'actions': ['専任営業担当', '月次訪問', '特別割引 15%', 'VIP限定イベント', 'カスタマイズサービス']
},
'B': {
'label': '重要',
'actions': ['四半期フォロー', '標準割引 10%', '一般イベント招待', 'A顧客への育成プログラム']
},
'C': {
'label': '一般',
'actions': ['メール/SNSでの対応', '標準サービスのみ', '効率化・自動化', '購買頻度確認']
}
}
for category in ['A', 'B', 'C']:
count = customer_summary.loc[category, '顧客数']
sales = customer_summary.loc[category, '売上比率']
avg = customer_summary.loc[category, '平均売上']
strategy = strategies[category]
print(f"■ {category}顧客({strategy['label']})")
print(f" {count:.0f}名(売上の{sales:.1f}%、平均{avg:.1f}万円/年)")
print(" 施策:")
for action in strategy['actions']:
print(f" ・{action}")
print()
# ============================================
# 顧客分析の可視化
# ============================================
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
# 1. 顧客のパレート図
ax1 = axes[0]
x = np.arange(len(df_customer))
colors_bar = df_customer['分類'].map({'A': '#ff6b6b', 'B': '#ffd93d', 'C': '#6bcb77'})
ax1.bar(x, df_customer['年間売上'], color=colors_bar, alpha=0.7, width=1.0)
ax1_twin = ax1.twinx()
ax1_twin.plot(x, df_customer['累積比率'], color='navy', linewidth=2)
ax1_twin.axhline(y=70, color='red', linestyle='--', alpha=0.7)
ax1_twin.axhline(y=90, color='orange', linestyle='--', alpha=0.7)
ax1.set_xlabel('顧客(売上順)', fontsize=11)
ax1.set_ylabel('年間売上(万円)', fontsize=11)
ax1_twin.set_ylabel('累積比率(%)', fontsize=11)
ax1.set_title('顧客パレート図', fontsize=13, fontweight='bold')
ax1.grid(alpha=0.3, axis='y')
# 2. 顧客数 vs 売上比率
ax2 = axes[1]
x_pos = np.arange(3)
width = 0.35
bars1 = ax2.bar(x_pos - width/2, customer_summary['顧客数比率'], width,
label='顧客数比率', color='steelblue', alpha=0.7)
bars2 = ax2.bar(x_pos + width/2, customer_summary['売上比率'], width,
label='売上比率', color='coral', alpha=0.7)
ax2.set_xlabel('分類', fontsize=11)
ax2.set_ylabel('比率(%)', fontsize=11)
ax2.set_title('顧客数 vs 売上の比較', fontsize=13, fontweight='bold')
ax2.set_xticks(x_pos)
ax2.set_xticklabels(['A(VIP)', 'B(重要)', 'C(一般)'])
ax2.legend()
ax2.grid(axis='y', alpha=0.3)
for bars in [bars1, bars2]:
for bar in bars:
height = bar.get_height()
ax2.text(bar.get_x() + bar.get_width()/2., height + 1,
f'{height:.1f}%', ha='center', va='bottom', fontsize=10)
plt.tight_layout()
plt.savefig('customer_abc.png', dpi=150, bbox_inches='tight')
plt.show()
print("→ グラフを 'customer_abc.png' に保存しました")
⚠️ 5. よくある間違いと対策
間違い1: C商品/顧客を軽視しすぎる
⚠️ Cランクにも価値がある!
問題:
・C商品をすべて廃止
・C顧客へのサービスを完全停止
見落としている価値:
・今はCでも将来Aになる可能性(新商品、新規顧客)
・A商品とセットで購入される
・品揃えの充実による顧客満足
・C顧客の口コミによる新規獲得
対策:
切り捨てではなく「効率的に管理」する
定期的にB→A、C→Bへの昇格を確認
間違い2: 一度分類したら更新しない
📌 ABC分類は定期的に見直す
問題:
・1年前のABC分類をそのまま使用
・市場環境が変わっても対応しない
推奨更新頻度:
・変動激しい業界: 月次
・一般的な業界: 四半期
・安定した業界: 半年〜年次
チェックポイント:
・A→B、B→Cへの降格
・C→B、B→Aへの昇格
・急激なランク変動の原因分析
間違い3: 売上だけで分類する
💡 利益やポテンシャルも考慮する
売上だけの問題:
・売上は高いが利益率が低い商品
・売上は低いが利益率が高い商品
・将来性のある新商品が無視される
多軸ABC分析:
・売上 × 利益率
・売上 × 成長率
・顧客数 × 購買頻度
例: 売上-利益マトリクス
・売上A × 利益A → 最優先
・売上A × 利益C → 利益改善が必要
・売上C × 利益A → 販売促進の余地あり
📝 STEP 37 のまとめ
✅ このステップで学んだこと
- パレートの法則: 80:20の法則(少数が大部分を占める)
- ABC分類: 累積比率で3グループに分類(70%/90%境界)
- 在庫管理: 分類別の管理レベル設定と最適化
- 顧客管理: VIP顧客の特定と育成戦略
- 実装: PythonとExcelでの分析とパレート図作成
📌 次のステップへの準備
STEP 38(在庫最適化)では、ABC分析の結果を活用して
具体的な発注点、安全在庫、発注量の計算方法を学びます。
このSTEPで学んだ「何を重点管理すべきか」という判断が、
次のSTEPでの「どれくらい在庫を持つべきか」の基礎になります。
💡 ABC分析の実務活用ポイント
重要な少数に注力することで効率アップ!
1. リソース配分の最適化
・A: 手厚く管理(70%のリソース)
・B: 標準管理(20%のリソース)
・C: 簡易管理(10%のリソース)
2. 在庫管理での効果
・A商品: 欠品防止 → 機会損失削減
・C商品: 在庫削減 → コスト削減
3. 顧客管理での効果
・A顧客: 満足度向上 → 離脱防止
・B顧客: A顧客への育成
ABC分析は、シンプルだけど強力!
すぐに実務で活用できます!
📝 練習問題
問題 1
基礎
10商品の売上データが以下の通りです。
ABC分析を行い、各商品を分類してください。
商品A: 500万円、商品B: 300万円、商品C: 200万円
商品D: 150万円、商品E: 100万円、商品F: 80万円
商品G: 70万円、商品H: 50万円、商品I: 30万円、商品J: 20万円
分類基準: A: 累積70%まで、B: 累積90%まで、C: それ以降
【解答】
1. 合計売上の計算
合計 = 500 + 300 + 200 + 150 + 100 + 80 + 70 + 50 + 30 + 20 =
1,500万円
2. 累積比率の計算
| 商品 |
売上 |
累積売上 |
累積比率 |
分類 |
| A |
500 |
500 |
33.3% |
A |
| B |
300 |
800 |
53.3% |
A |
| C |
200 |
1000 |
66.7% |
A |
| D |
150 |
1150 |
76.7% |
B |
| E |
100 |
1250 |
83.3% |
B |
| F |
80 |
1330 |
88.7% |
B |
| G |
70 |
1400 |
93.3% |
C |
| H〜J |
100 |
1500 |
100% |
C |
分類結果:
・
Aランク: 商品A、B、C(3点、30%)→ 売上66.7%
・
Bランク: 商品D、E、F(3点、30%)→ 売上22.0%
・
Cランク: 商品G、H、I、J(4点、40%)→ 売上11.3%
→ 上位30%の商品が売上の67%を占める(パレートの法則!)
問題 2
応用
在庫管理担当者として、以下の状況で在庫削減計画を立ててください。
現状:
・Aランク商品(10点): 在庫回転率 8回/年、在庫金額 1,000万円
・Bランク商品(30点): 在庫回転率 6回/年、在庫金額 500万円
・Cランク商品(60点): 在庫回転率 2回/年、在庫金額 500万円
目標: 総在庫金額を20%削減(2,000万円 → 1,600万円)
【解答】Cランク商品の在庫を大幅削減すべき
理由:
1. 在庫回転率が低い
・Cランク: 2回/年(半年に1回しか売れない)
・Aランク: 8回/年(1.5ヶ月に1回売れる)
→ Cランクは資金効率が悪い
2. 売上への影響が小さい
・Cランクは売上の10%程度
・削減しても影響は限定的
削減計画:
・Aランク: 0%削減 → 1,000万円(欠品リスク回避)
・Bランク: 10%削減 → 450万円
・Cランク: 50%削減 → 250万円
→ 合計: 1,700万円(15%削減)
追加施策(20%達成のため):
・CランクSKUを60点→40点に削減
・売れないC商品は受注生産に移行
→ 合計: 1,600万円(20%削減達成)
問題 3
応用
顧客ABC分析の結果、以下のことが判明しました。
・A顧客(20名): 年間売上 7,000万円
・B顧客(50名): 年間売上 2,000万円
・C顧客(130名): 年間売上 1,000万円
営業担当者5名で、月間100時間の営業時間があります。
ABC分類に基づいた時間配分を提案してください。
【解答】売上貢献度に応じた時間配分
現状分析:
・A顧客: 20名で売上70%(1名あたり350万円/年)
・B顧客: 50名で売上20%(1名あたり40万円/年)
・C顧客: 130名で売上10%(1名あたり7.7万円/年)
推奨時間配分:
・A顧客: 70時間/月(70%)
・B顧客: 20時間/月(20%)
・C顧客: 10時間/月(10%)
具体的な活動:
A顧客(70時間 ÷ 20名 = 3.5時間/名):
・月1回の訪問(2時間)
・電話/メールフォロー(1.5時間)
・担当: 専任5名で4名ずつ
B顧客(20時間 ÷ 50名 = 24分/名):
・四半期1回の訪問
・月1回の電話フォロー(10分)
・担当: 全員で分担
C顧客(10時間 ÷ 130名 = 4.6分/名):
・メール/ニュースレター中心
・問い合わせ対応のみ
・自動化ツール活用
期待効果:
・A顧客の離脱防止(売上維持)
・B顧客からA顧客への育成
・C顧客対応の効率化
問題 4
発展
売上だけでなく、利益率も考慮した多軸ABC分析を行いたいと考えています。
以下の4商品について、「売上ABC」と「利益率ABC」の2軸で分析し、
それぞれの商品に対する施策を提案してください。
商品P: 売上500万円、利益率30%
商品Q: 売上400万円、利益率5%
商品R: 売上50万円、利益率40%
商品S: 売上30万円、利益率8%
【解答】2軸ABC分析による戦略的施策
2軸分類:
| 商品 |
売上 |
売上ABC |
利益率 |
利益率ABC |
利益額 |
| P |
500万 |
A |
30% |
A |
150万 |
| Q |
400万 |
A |
5% |
C |
20万 |
| R |
50万 |
C |
40% |
A |
20万 |
| S |
30万 |
C |
8% |
C |
2.4万 |
施策提案:
商品P(売上A × 利益率A)→ 最優先!
・利益額150万円で最大貢献
・施策: 販促強化、在庫確保、拡販
商品Q(売上A × 利益率C)→ 利益改善!
・売上は高いが利益率が低い(5%)
・施策: コスト削減、値上げ検討、仕入先見直し
・改善されなければ縮小も検討
商品R(売上C × 利益率A)→ 拡販余地!
・利益率40%と高収益
・施策: マーケティング強化、認知度向上
・売上を伸ばせば大きな利益貢献
商品S(売上C × 利益率C)→ 見直し対象
・売上も利益率も低い
・施策: 廃止検討、または最小限の在庫で維持
・他商品とのセット販売での活用
❓ よくある質問
Q1: ABC分類の境界(70%、90%)は絶対ですか?
いいえ、業界や目的に応じて調整できます。
一般的な基準:
・A: 0〜70%(または80%)
・B: 70〜90%(または80〜95%)
・C: 90〜100%(または95〜100%)
厳しい基準(Aに集中):
・A: 0〜60%、B: 60〜85%、C: 85〜100%
緩い基準(より多くを重点管理):
・A: 0〜80%、B: 80〜95%、C: 95〜100%
推奨: まずは標準的な70%/90%で開始し、実務に合わせて調整
Q2: C商品/C顧客は切り捨てるべきですか?
いいえ、慎重に判断すべきです。
Cランクの隠れた価値:
・今はCでも将来Aになる可能性(新商品、新規顧客)
・A商品とセットで購入される
・品揃えの充実による顧客満足
・C顧客の口コミによる新規獲得
切り捨てを検討すべき場合:
・赤字の商品/顧客
・長期間動きがない
・管理コストが高すぎる
原則: 切り捨てではなく「効率的に管理」することが目的!
Q3: ABC分析はどのくらいの頻度で更新すべきですか?
四半期ごとの更新を推奨します。
更新頻度の目安:
・変動激しい業界(ファッション、IT): 月次
・一般的な業界(小売、製造): 四半期
・安定した業界(インフラ、公共): 半年〜年次
更新すべきタイミング:
・新商品投入時
・大型プロモーション後
・市場環境の大きな変化
チェックポイント:
・A→B、B→Cへの降格
・C→B、B→Aへの昇格
・急激なランク変動の原因分析
Q4: ABC分析以外に使える分類手法はありますか?
はい、目的に応じて他の手法も活用できます。
RFM分析(顧客分析向け):
・Recency(最終購買日)
・Frequency(購買頻度)
・Monetary(購買金額)
→ 3軸で顧客をセグメント化
VED分析(在庫管理向け):
・Vital(重要): なくてはならない
・Essential(必須): あった方がよい
・Desirable(望ましい): なくても困らない
→ 重要度で分類
FSN分析(在庫回転向け):
・Fast moving(回転が速い)
・Slow moving(回転が遅い)
・Non-moving(動きがない)
→ 在庫回転率で分類
組み合わせ:
ABC × VED、ABC × FSNなど多軸分析も効果的
artnasekai
#artnasekai #学習メモ