Claudeでセールを効果検証する — 前年同週比と値引き率の切り分け
セール週の売上を前年同週と比べるだけでは、値引きの効果は分かりません。曜日を揃えた基準週、数量効果と値引き効果、粗利の損益分岐を、Claudeに表と集計コードで出させる手順です。
売上が前年同週比120%でも、粗利は減っていることがある
セールの効果検証でよく起きる失敗は、前年同週比の売上だけを見て「成功」と判定することです。値引きで客数は増えても、1点あたりの粗利が削れて、粗利の合計は前年を下回る場合があります。
Claudeには、売上データのCSVやExcelを渡して集計と表の作成を任せられます。ただし、何を基準に何と比べるかを決めないまま「効果を分析して」と頼むと、売上の増減を説明するだけの文章が返ってきます。
この記事では、検証を3つに分けます。
セール効果検証の3段階
- 1
基準週を揃える
曜日、祝日、前年の別施策をそろえた比較相手を決めます。
- 2
数量効果と値引き効果に分ける
粗利の増減を、売れた数の変化と1点あたり粗利の変化に割ります。
- 3
粗利の損益分岐で評価する
値引き率ごとに、何倍売れれば前年の粗利に並ぶかを出します。
数字の中身は、手元のデータで決まります。Claudeに任せるのは集計と整形で、判定の基準はこちらで書き込みます。
前年同週比が壊れる4つの場面
前年同週比は「週番号が同じ」だけでは揃いません。ずれやすい場面を先に並べておくと、Claudeへの指示がそのまま具体的になります。
| ずれの原因 | 起きること | 指示の書き方 |
|---|---|---|
| 曜日のずれ | 起きること週末が1日多い週と少ない週を比べる | 指示の書き方364日前(52週前)の同じ曜日で対応づける |
| 祝日・連休 | 起きること今年だけ3連休が入る | 指示の書き方祝日の日を除外した比較も並べる |
| 前年の別施策 | 起きること前年も値引き中で基準が低くない | 指示の書き方前年の値引き率を日ごとに列に持つ |
| 在庫切れ・欠品 | 起きること売れなかったのか、売る物がなかったのか不明 | 指示の書き方欠品日はフラグを立てて別集計にする |
364日前で対応づけると、曜日は必ず一致します。たとえば2026年9月14日(月曜)の364日前は2025年9月15日(月曜)です。ISO週番号で機械的に結ぶと、年末年始の前後でずれる年があるため、日付からの差で結ぶほうが安全です。
データをClaudeに渡す前に整える
渡す形は、日付×商品の明細に、次の列を持たせたものが扱いやすくなります。
- 日付、注文ID、商品ID
- 数量、定価、実売単価(値引き後)、原価
- 欠品フラグ、実施中の施策名
アップロードできる形式には、CSV、XLSX、JSONなどがあります。XLSXを使うには、アカウントでコード実行とファイル作成を有効にしておく必要があります。
大きさには注意が要ります。チャットへのアップロードは1ファイルあたり500MBとされるページがある一方、ファイル作成の説明ページは、アップロードもダウンロードも1ファイル30MBまでと書いています。ページ同士で数字が食い違うため、注文明細を日×商品に集計してから渡し、30MB以内に収めておくのが無難です。Projectsのファイルは1ファイル30MBで、テキスト抽出のみです。
無料枠でもコード実行は使えるか
Free、Pro、Maxではコード実行とファイル作成が既定で有効です。TeamとEnterpriseでも既定は有効ですが、組織のオーナーが設定で無効にできます。社内で「ファイルを渡しても集計コードが走らない」場合は、まず組織設定を確認します。
依頼文の骨子
最初の依頼で、比較の定義まで書き込みます。次の形が出発点になります。
添付の sales_daily.csv は日×商品の売上明細です。
セール期間は2026-09-14〜2026-09-20です。
1. 基準週は364日前の同じ曜日(2025-09-15〜2025-09-21)にしてください。
祝日を含む日は除いた集計も別に出してください。
2. 欠品フラグが立っている日は、両期間とも集計から外してください。
3. 次の指標を、基準週とセール週で並べた表にしてください。
数量、売上、粗利、注文数、1注文あたり点数、実質値引き率
4. 粗利の増減を「数量効果」と「値引き効果」に分けてください。
式も表の下に書いてください。
5. 値引き率ごとに、前年の粗利と並ぶ損益分岐の数量倍率を出してください。2と3が抜けやすい項目です。欠品の扱いと実質値引き率を明示しないと、Claudeは手元の列から無難な定義を選び、その定義を答えに書かないことがあります。定義は必ず表の注記に出させます。
数量効果と値引き効果の切り分け
粗利の増減は、2つの式に割れます。
- 数量効果 =(セール週の数量 − 基準週の数量)× 基準週の1点あたり粗利
- 値引き効果 = セール週の数量 ×(セール週の1点あたり粗利 − 基準週の1点あたり粗利)
2つを足すと、粗利の増減にぴったり一致します。ここが検算の拠り所です。
仮の数字で確かめる
1商品で試算します。数字は説明用の仮のものです。
| 基準週 | セール週(20%引き) | |
|---|---|---|
| 数量 | 基準週1,000点 | セール週(20%引き)1,500点 |
| 実売単価 | 基準週1,000円 | セール週(20%引き)800円 |
| 原価 | 基準週600円 | セール週(20%引き)600円 |
| 1点あたり粗利 | 基準週400円 | セール週(20%引き)200円 |
| 売上 | 基準週100万円 | セール週(20%引き)120万円 |
| 粗利 | 基準週40万円 | セール週(20%引き)30万円 |
売上は20%増えましたが、粗利は10万円の減少です。内訳は数量効果が+20万円(500点×400円)、値引き効果が−30万円(1,500点×−200円)で、合計−10万円と一致します。
損益分岐の数量は、基準週の粗利40万円を、セール週の1点あたり粗利200円で割った2,000点です。基準週の2倍売れて初めて、粗利が並びます。1,500点では届いていません。
集計コードを自分でも持っておく
Claudeはコード実行の環境でPythonを書いて走らせ、CSVの分析やPNGのグラフ作成ができます。出てきた数字を信じる前に、自分でも再現できる短いコードを手元に置くと、検算が早くなります。次は、公式の例ではなく、上の定義を書き下した一例です。
python3 sale_check.py sales_daily.csvimport pandas as pd
df = pd.read_csv("sales_daily.csv", parse_dates=["date"])
df = df[~df["stockout"]] # 欠品日は両期間から除外
def agg(d):
return pd.Series({
"qty": d["qty"].sum(),
"sales": (d["qty"] * d["net_price"]).sum(),
"list": (d["qty"] * d["list_price"]).sum(),
"gp": (d["qty"] * (d["net_price"] - d["unit_cost"])).sum(),
"orders": d["order_id"].nunique(),
})
sale = agg(df[df["date"].between("2026-09-14", "2026-09-20")])
base = agg(df[df["date"].between("2025-09-15", "2025-09-21")])
g0, g1 = base["gp"] / base["qty"], sale["gp"] / sale["qty"]
qty_effect = (sale["qty"] - base["qty"]) * g0
price_effect = sale["qty"] * (g1 - g0)
print("実質値引き率", 1 - sale["sales"] / sale["list"])
print("粗利増減", sale["gp"] - base["gp"])
print("数量効果", qty_effect, "値引き効果", price_effect)
print("損益分岐の数量倍率", g0 / g1)複数商品を合算すると、1点あたり粗利が商品構成(ミックス)の変化にも左右されます。商品ごとに計算して足し上げる形にすると、構成の変化と値引きの効果を分けやすくなります。依頼文に「商品ごとに計算してから合算」と書き添えます。
Excelで確かめたい場合
Claude for ExcelはPro、Max、Team、Enterpriseで使えるアドインです。開いているブックについて質問すると、セル単位の根拠つきで答えが返ります。前提を変えても数式の関係を保ったまま調整できるため、値引き率を動かして損益分岐を見る用途に向きます。値引き率ごとの粗利を並べたシートは、値上げシミュレーションを離脱率つきで組む手順と同じ作りで組めます。
ブラウザ版のClaudeで作ったxlsxを使う場合は、ダウンロードして自分のExcelで開きます。ファイルはダウンロードのほか、Google Driveへ直接保存もできます。
数量の伸びを、客数と買い方に割る
数量効果が大きく出たら、その中身を割ります。数量は「注文数 × 1注文あたり点数」に分けられます。注文数が増えたなら新規来店や再来店の効果、1注文あたり点数が増えたなら、まとめ買いやセット購入の効果です。
値引きで効いているのが後者だけなら、店に来る人は増えていません。販促の打ち手は、値引き率ではなく集客の側にあります。逆に注文数だけが増えて点数が減っているなら、安い商品だけを買って帰る客が増えた可能性があります。
追い依頼は、次のように短く足します。
数量の増減を、注文数の変化と1注文あたり点数の変化に分けてください。
注文数が増えた分のうち、過去90日に購入のない顧客IDの割合も出してください。顧客IDの列がなければ、後半は頼まずに、注文数と点数の分解までで止めます。データにない列を補って計算させると、数字だけが整って根拠が残りません。
次のセールの値引き率に使う
ここまでの表が揃うと、次のセールに向けた判断の材料になります。決め方の一例は次のとおりです。
- 過去のセールで得られた「値引き率ごとの数量倍率」を並べる
- 各値引き率の損益分岐倍率(基準の1点あたり粗利 ÷ 値引き後の1点あたり粗利)と比べる
- 実績の倍率が損益分岐を超えた値引き率だけを、候補に残す
たとえば原価率60%の商品は、10%引きで1点あたり粗利が400円から300円になり、損益分岐は約1.33倍です。20%引きなら2倍まで跳ね上がります。値引き率が10%から20%に倍になるだけで、必要な数量倍率は1.33倍から2倍へ、1.5倍に跳ね上がります。
過去のセールが1回しかないときは、倍率を一般化しないでください。1回の結果は、天候や同時期の他施策に左右されます。
検算してから結論にする
Claudeの数字は、次の4点を自分で確かめてから報告に使います。
- 基準週・セール週の売上合計が、販売管理システムの集計と一致するか
- 数量効果と値引き効果の合計が、粗利の増減に一致するか
- 除外した日(欠品・祝日)の件数が、依頼どおりか
- 実質値引き率が、定価ベースの計算か、前年実績ベースの計算か
CSVの扱い全般はClaudeでCSVを分析する手順に、広告費の配分まで広げた評価はキャンペーンの効果測定と予算再配分の記事にあります。本記事は、値引きそのものの採算に絞っています。
セール特有のつまずき
セールの期間だけを見ると、見落とす動きがあります。
- 先食い: セール前後の週に需要が移るだけで、合計では増えていない場合がある。セール前後各2週を含めて比べる
- カニバリ: 値引き商品が、値引きしていない商品を食う。商品群ごとの合計粗利も出す
- 新規客と既存客: 既存客が安く買い替えただけなら、増分は小さい。顧客IDがあれば客層別に分ける
- 返品: セール品は返品率が上がることがある。返品後の粗利で再計算する
前後2週を含める指示は、依頼文の1に「前後各2週の推移も出して」と足すだけです。
個人情報と外部ファイルの扱い
顧客IDやメールアドレスが入った明細は、分析に不要な列を削ってから渡します。もう1つ、競合の価格表やチラシのPDFなど外部のファイルを一緒に渡すときは注意が要ります。コード実行の説明ページは、外部のファイルやウェブサイトに仕込まれた指示でClaudeが誘導され、コンテキストの情報が外に送られる恐れを挙げています。作業中は実行内容を見ておき、想定外のデータ参照が出たら止めます。
使用量の面では、ファイル作成を伴う会話は通常のチャットより上限を多く消費します。分析のたびに全明細を渡し直すより、Projectsに集計済みのファイルを置いておくほうが、やり取りの回数を抑えられます。
まとめ
セール週の売上を前年同週と並べるだけでは、値引きの採算は見えません。曜日を揃えた基準週、数量効果と値引き効果の分解、粗利の損益分岐の3点を依頼文に書き込み、合計が一致するかを検算します。
20%引きなら基準週の2倍売れて粗利が並ぶ、という見方を先に持っておくと、次のセールで値引き率を決める材料になります。