Excel売上予測をClaude Codeに頼んだら10分で完成した【2026年AI活用版】

過去の売上CSVをClaude Codeに渡すだけで、Pythonの予測コードを自動生成。Prophet・statsmodelsによる売上予測をClaude Codeで実際に試した体験レポート。プロンプト例と実行結果つき。

この記事をシェア:
目次 クリックで開く


| Claude Code 活用ラボ

「Pythonで売上予測を作りたいけど難しそう」と思っていませんか?実はClaude Codeに過去の売上CSVを渡してお願いするだけで、本格的な予測コードが数分で手に入ります。実際に試した体験をそのままレポートします。

Claude Code実践
プロンプト例つき
コピペで動く
Excel出力対応
Claude Codeが生成した売上予測Excelのデモ画面

▲ Claude Codeが実際に生成したコードを実行した結果(売上予測グラフ付きExcel)

毎月の売上予測、こんな課題ありませんか?

多くの営業部門・経営企画部門では、毎月の売上予測をExcelの勘と経験に頼っています。前月比や前年同月比を手計算し、担当者の感覚で「来月は120%くらいかな」と数字を埋める——そんな作業を繰り返していないでしょうか。

このやり方には2つの大きな問題があります。

  • 属人化: 担当者が変わると予測の精度や方法がバラバラになる
  • 非効率: 毎月同じような作業を手作業で繰り返す時間的コスト

「Pythonで機械学習の予測モデルを作れば解決できる」——それはわかっていても、統計やプログラミングの専門知識がないと難しく感じる方がほとんどです。

そこで私はClaude Codeに頼むことにしました。Pythonコードを自分で書く必要はありません。やり方は驚くほどシンプルです。

「Claude Codeを使えば、Pythonが書けなくても本格的な売上予測が実現できる」と聞いて半信半疑でしたが、実際に試してみたら本当に10分で動くコードが手に入りました。そのプロセスをそのままお伝えします。

項目 従来の手動予測 Claude Code + Python予測
予測にかかる時間 毎月2〜3時間 コード作成10分 → 以降は数秒で自動実行
予測の根拠 担当者の感覚・経験 統計モデル(数学的根拠あり)
信頼区間 なし(点予測のみ) あり(上限・下限の幅を自動計算)
季節性考慮 担当者が手動で調整 モデルが自動検出・適用
必要なスキル Excel操作 Claude Codeに日本語で頼むだけ
Claude Code
Excel売上予測
Prophet
Python自動化
AI活用

Step 1: Claude Codeへの入力(プロンプト)

STEP 1

私はこうClaude Codeに頼みました

やることはシンプルです。Claude Codeのチャット画面を開いて、以下のように入力するだけです。CSVファイルの内容(または列名の情報)を一緒に貼り付けると、より精度の高いコードが生成されます。

CLAUDE CODE へのプロンプト(コピー&ペーストでOK)
以下の形式の売上CSVデータがあります。

列名: date(日付 YYYY-MM-DD形式), sales(売上金額 円), product(製品カテゴリ), region(地域)

このCSVを読み込んで、以下のことをするPythonコードを作ってください:
1. pandasでCSVを読み込み、月次の売上合計を集計する
2. Prophetを使って3ヶ月先まで売上を予測する
3. 予測結果(実績+予測)をmatplotlibでグラフ化する
4. 予測グラフと予測数値をExcelファイルに出力する

日本語表示に対応してください。ファイル名はsales.csvとします。

これだけです。Claude Codeはこの1回の入力から、必要なライブラリのインストールコマンドから始まり、データ読み込み・予測・グラフ生成・Excel出力まで一連のコードを生成してくれます。

ポイント: Claude Codeへの入力は「やりたいこと」を日本語で書くだけでOKです。「Prophetって何?」「pandasって?」を知らなくても、「月次売上を予測したい」「グラフとExcelに出したい」という目的を伝えれば、Claude Codeが適切な技術選択をしてコードを生成してくれます。

Step 2: Claude Codeが生成したコード

STEP 2

Claude Codeが出力したコードがこちら

上記のプロンプトを入力すると、Claude Codeは約30秒で以下のような完全なコードを出力しました。コードを分割して解説します。

まずインストールコマンドを教えてくれました

Claude Codeの回答(最初の部分):

「以下のライブラリが必要です。まずターミナルで実行してください:」

pip install pandas prophet matplotlib openpyxl japanize-matplotlib

Claude Codeが生成したメインコード(全文)

続けて、Claude Codeは以下の完全なPythonコードを生成しました。コードの各部分に何をしているかのコメントもClaude Codeが自動で付けてくれました。

“””
sales_forecast.py
Claude Codeが生成した売上予測スクリプト
実行: python sales_forecast.py
“””

import warnings
warnings.filterwarnings(‘ignore’)

import pandas as pd
import matplotlib
matplotlib.use(‘Agg’) # GUIなし環境用バックエンド
import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語フォント対応
from prophet import Prophet
import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.drawing.image import Image as XLImage
from pathlib import Path
import datetime

# ================================
# 設定(必要に応じて変更してください)
# ================================

CSV_PATH = “sales.csv” # 入力CSVファイル
OUTPUT_EXCEL = “forecast_result.xlsx” # 出力Excelファイル
FORECAST_MONTHS = 3 # 何ヶ月先まで予測するか
EXCEL_GREEN = “#107C41”
# ================================
# Step1: CSVを読み込んで月次集計
# ================================

def load_and_aggregate(csv_path: str) -> pd.DataFrame:
“””CSVを読み込み、月次売上を集計してProphet用データフレームを返す”””
df = pd.read_csv(csv_path, parse_dates=[“date”])

# 月次集計(Prophetはds/y列名が必要)
monthly = (
df.resample(“MS”, on=“date”)[“sales”]
.sum()
.reset_index()
.rename(columns={“date”: “ds”, “sales”: “y”})
)

print(f”データ読み込み完了: {len(monthly)}ヶ月分のデータ”)
print(f”期間: {monthly[‘ds’].min().strftime(‘%Y年%m月’)} 〜 {monthly[‘ds’].max().strftime(‘%Y年%m月’)}”)
return monthly

# ================================
# Step2: Prophetで売上予測
# ================================

def run_forecast(monthly_df: pd.DataFrame, months: int) -> tuple:
“””Prophetモデルで将来の売上を予測する”””
# Prophetモデルの設定
model = Prophet(
yearly_seasonality=True, # 年次季節性(繁忙期・閑散期)を考慮
weekly_seasonality=False, # 月次データなので週次は無効
daily_seasonality=False, # 月次データなので日次は無効
seasonality_mode=“multiplicative”, # 売上は乗法的季節性が多い
changepoint_prior_scale=0.05, # トレンド変化点の感度
)

# 日本の祝日を追加(任意)
model.add_country_holidays(country_name=“JP”)

# モデル学習
model.fit(monthly_df)

# 予測期間のデータフレームを作成(月初日)
future = model.make_future_dataframe(
periods=months,
freq=“MS” # Month Start(月初)
)

# 予測実行
forecast = model.predict(future)

print(f”予測完了: {months}ヶ月先まで予測しました”)
return model, forecast

# ================================
# Step3: グラフ生成
# ================================

def create_forecast_chart(
monthly_df: pd.DataFrame,
forecast: pd.DataFrame,
output_path: str
) -> str:
“””実績と予測を重ねたグラフを生成してPNGに保存する”””

fig, axes = plt.subplots(2, 1, figsize=(12, 10))

# — グラフ1: 売上予測(実績 + 予測 + 信頼区間)—
ax = axes[0]

# 実績データ
actual_dates = monthly_df[“ds”]
actual_sales = monthly_df[“y”] / 1e6 # 百万円単位
# 予測データ
pred = forecast.set_index(“ds”)
pred_sales = pred[“yhat”] / 1e6
pred_lower = pred[“yhat_lower”] / 1e6
pred_upper = pred[“yhat_upper”] / 1e6
# 信頼区間(塗りつぶし)
ax.fill_between(
pred.index, pred_lower, pred_upper,
alpha=0.2, color=EXCEL_GREEN, label=“信頼区間(80%)”
)

# 予測ライン
ax.plot(pred.index, pred_sales,
color=EXCEL_GREEN, linewidth=2, linestyle=“–“,
label=“予測値”, zorder=3)

# 実績ライン
ax.plot(actual_dates, actual_sales,
color=“#1a1a1a”, linewidth=2.5,
marker=“o”, markersize=5, label=“実績値”, zorder=4)

# 予測開始の縦線
forecast_start = monthly_df[“ds”].max()
ax.axvline(x=forecast_start, color=“#f59e0b”,
linewidth=1.5, linestyle=“:”, label=“予測開始”)
ax.text(forecast_start, ax.get_ylim()[1] * 0.95,
” 予測開始→”, color=“#f59e0b”, fontsize=9)

ax.set_title(“月次売上 実績 + 3ヶ月先予測”, fontsize=14, fontweight=“bold”, pad=12)
ax.set_ylabel(“売上(百万円)”)
ax.legend(loc=“upper left”)
ax.grid(axis=“y”, linestyle=“–“, alpha=0.5)
[ax.spines[s].set_visible(False) for s in [“top”, “right”]]

# — グラフ2: 季節性の成分 —
ax2 = axes[1]
trend = forecast[“trend”] / 1e6
ax2.plot(forecast[“ds”], trend,
color=EXCEL_GREEN, linewidth=2)
ax2.fill_between(forecast[“ds”], trend, alpha=0.15, color=EXCEL_GREEN)
ax2.set_title(“基調トレンド”, fontsize=13, fontweight=“bold”)
ax2.set_ylabel(“トレンド成分(百万円)”)
ax2.grid(axis=“y”, linestyle=“–“, alpha=0.5)
[ax2.spines[s].set_visible(False) for s in [“top”, “right”]]

plt.tight_layout(pad=3.0)
fig.savefig(output_path, dpi=150, bbox_inches=“tight”)
plt.close(fig)

print(f”グラフ保存: {output_path}”)
return output_path

# ================================
# Step4: Excelファイルに出力
# ================================

def export_to_excel(
monthly_df: pd.DataFrame,
forecast: pd.DataFrame,
chart_path: str,
output_path: str
):
“””予測結果をExcelファイルに出力する(グラフ付き)”””

wb = openpyxl.Workbook()

# —- シート1: 売上予測グラフ —-
ws_chart = wb.active
ws_chart.title = “予測グラフ”
# タイトル
ws_chart.merge_cells(“A1:N1”)
c = ws_chart[“A1”]
c.value = f”売上予測レポート — {datetime.date.today().strftime(‘%Y年%m月%d日’)} 生成”
c.font = Font(bold=True, size=14, color=“FFFFFF”)
c.fill = PatternFill(“solid”, fgColor=“107C41”)
c.alignment = Alignment(horizontal=“center”, vertical=“center”)
ws_chart.row_dimensions[1].height = 36
# グラフ画像を挿入
img = XLImage(chart_path)
img.width, img.height = 700, 500
ws_chart.add_image(img, “A3”)

# —- シート2: 予測数値データ —-
ws_data = wb.create_sheet(“予測数値”)

# ヘッダー
headers = [“年月”, “実績(円)”, “予測値(円)”, “予測下限(円)”, “予測上限(円)”, “区分”]
header_fill = PatternFill(“solid”, fgColor=“107C41”)
for col, h in enumerate(headers, 1):
cell = ws_data.cell(row=1, column=col, value=h)
cell.font = Font(bold=True, color=“FFFFFF”)
cell.fill = header_fill
cell.alignment = Alignment(horizontal=“center”)

# 実績データのセット
actual_dict = monthly_df.set_index(“ds”)[“y”].to_dict()
last_actual = monthly_df[“ds”].max()

# データ行の書き込み
for row_i, (_, row) in enumerate(forecast.iterrows(), 2):
ds = row[“ds”]
actual = actual_dict.get(ds, “”)
is_forecast = ds > last_actual
label = “予測” if is_forecast else “実績”

values = [
ds.strftime(“%Y年%m月”),
actual,
round(row[“yhat”]),
round(row[“yhat_lower”]),
round(row[“yhat_upper”]),
label,
]
for col_i, val in enumerate(values, 1):
cell = ws_data.cell(row=row_i, column=col_i, value=val)
if is_forecast:
cell.fill = PatternFill(“solid”, fgColor=“F0FAF4”)

# 列幅の自動調整
for col_cells in ws_data.columns:
max_len = max(len(str(c.value or “”)) for c in col_cells)
ws_data.column_dimensions[col_cells[0].column_letter].width = max_len + 4

wb.save(output_path)
print(f”Excel出力完了: {output_path}”)

# ================================
# メイン処理
# ================================

def main():
print(“=== 売上予測スクリプト(Claude Code生成)===”)

print(“\n[1/4] CSVデータを読み込んでいます…”)
monthly_df = load_and_aggregate(CSV_PATH)

print(“\n[2/4] Prophetで売上を予測しています…”)
model, forecast = run_forecast(monthly_df, FORECAST_MONTHS)

print(“\n[3/4] 予測グラフを生成しています…”)
chart_path = “forecast_chart.png”
create_forecast_chart(monthly_df, forecast, chart_path)

print(“\n[4/4] Excelファイルに出力しています…”)
export_to_excel(monthly_df, forecast, chart_path, OUTPUT_EXCEL)

print(“\n完了!予測結果ファイル:”, OUTPUT_EXCEL)

# 予測サマリーを表示
future_rows = forecast[forecast[“ds”] > monthly_df[“ds”].max()]
print(“\n— 3ヶ月予測サマリー —“)
for _, row in future_rows.iterrows():
print(
f” {row[‘ds’].strftime(‘%Y年%m月’)}: “
f”¥{row[‘yhat’]/1e6:.1f}M “
f”(下限 ¥{row[‘yhat_lower’]/1e6:.1f}M 〜 上限 ¥{row[‘yhat_upper’]/1e6:.1f}M)”
)

if __name__ == “__main__”:
main()

Claude Codeが生成したコードの注目ポイント: Claude Codeは単にコードを書くだけでなく、各ステップを関数に分割し、進行状況のprintメッセージまで自動で追加してくれました。また、信頼区間(予測の上限・下限)の可視化も自動的に組み込まれています。これを自分でゼロから書くと数時間かかります。

Step 3: 実行結果「こうなります」

STEP 3

実際に動かしてみた結果

Claude Codeが生成したコードをターミナルで実行すると、以下のような出力が表示されます。

=== 売上予測スクリプト(Claude Code生成)===

[1/4] CSVデータを読み込んでいます…
データ読み込み完了: 24ヶ月分のデータ
期間: 2024年01月 〜 2025年12月

[2/4] Prophetで売上を予測しています…
予測完了: 3ヶ月先まで予測しました

[3/4] 予測グラフを生成しています…
グラフ保存: forecast_chart.png

[4/4] Excelファイルに出力しています…
Excel出力完了: forecast_result.xlsx

完了!予測結果ファイル: forecast_result.xlsx

— 3ヶ月予測サマリー —
2026年01月: ¥52.3M (下限 ¥47.8M 〜 上限 ¥56.9M)
2026年02月: ¥48.7M (下限 ¥43.9M 〜 上限 ¥53.6M)
2026年03月: ¥58.1M (下限 ¥52.4M 〜 上限 ¥63.8M)

生成されるExcelファイルの内容

Claude Codeが生成したコードによる売上予測Excelの出力結果

▲ Claude Codeが生成したコードを実行して出力されたExcelファイルの「予測グラフ」シート

生成されるExcelファイルは2つのシートで構成されます:

  • 予測グラフシート: 実績ライン(黒)・予測ライン(緑破線)・信頼区間(薄緑塗りつぶし)・基調トレンドの2段グラフ。見た目はプロのレポートそのものです。
  • 予測数値シート: 年月・実績・予測値・予測下限・予測上限・区分(実績/予測)の6列テーブル。予測行は薄緑で色分けされています。

正直、Claude Codeが出してきたコードのクオリティに驚きました。信頼区間の可視化、グラフの色分け、Excelのシート分割と色付けまで、自分では思いつかなかった細かい配慮が随所に入っていました。

Claude Codeへの応用プロンプト集

基本の予測コードができたら、Claude Codeに追加でお願いすることで機能をどんどん拡張できます。実際に私が試したプロンプトと結果を紹介します。

応用プロンプト 5選

応用1: 商品カテゴリ別に予測を分ける
CLAUDE CODE へのプロンプト
先ほどのコードを改修してください。
sales.csvには「product」列(製品カテゴリ)があります。
カテゴリごとに別々のProphetモデルで予測し、
各カテゴリの予測グラフを1枚のExcelに別シートで出力してください。
応用2: 目標達成確率を計算する
CLAUDE CODE へのプロンプト
先月の売上目標は60百万円でした。
Prophetの予測分布(信頼区間)を使って、
来月の売上が月次目標60百万円を超える確率を計算してください。
モンテカルロシミュレーションでも構いません。
応用3: 予測精度(MAPE)を計算する
CLAUDE CODE へのプロンプト
生成したProphetモデルの予測精度を検証したいです。
直近3ヶ月を検証データとして除外し、残りのデータで学習させてから
検証データの予測誤差(MAPE・RMSE)を計算するコードを追加してください。
精度評価結果もExcelに出力してください。
応用4: 予測結果をSlackに自動通知する
CLAUDE CODE へのプロンプト
毎月1日に自動実行して、予測サマリーをSlackに送信したいです。
Slack Webhook URLを使って「来月の売上予測: ¥XX.XM(信頼区間: ¥XX.XM〜¥XX.XM)」
というメッセージを送るコードを追加してください。
cronでの定期実行方法も教えてください。
応用5: 異常値を自動検出して除外する
CLAUDE CODE へのプロンプト
売上データにコロナ禍の2020年のような外れ値が含まれています。
IQR法または3シグマ法で外れ値を自動検出し、
Prophetのfloor/capで上限下限を設定するか、
changepoints引数で変化点を手動指定するコードに改修してください。

予測モデルの選び方(Claude Codeに聞いた)

「どの予測モデルを使えばいいか」という疑問も、Claude Codeに直接聞けば教えてくれます。実際に私が聞いたところ、以下のような回答が返ってきました。

CLAUDE CODE へのプロンプト
売上予測でよく使われるPythonのモデルを比較してください。
Prophet、ARIMA、線形回帰、LightGBMのそれぞれの
メリット・デメリットと、どんな状況で使うべきかを教えてください。

Claude Codeはこのプロンプトに対して、以下のような比較表を生成しながら説明してくれました。

モデル 向いているケース データ量の目安 難易度
Prophet 季節性が強い・祝日考慮したい・傾向が分かりやすい 1年以上推奨(最低6ヶ月) 低(Claude Codeで簡単)
ARIMA / SARIMA 定常な時系列・外れ値が少ない・短期予測 50点以上 中(パラメータ調整が必要)
線形回帰 データが少ない・説明変数(気温・広告費等)がある 30点以上 低(解釈しやすい)
LightGBM/XGBoost 複数の特徴量がある・非線形な関係・高精度が必要 1,000点以上推奨 高(特徴量エンジニアリングが必要)

Claude Codeからのアドバイス(実際の回答より): 「月次の売上予測には、まずProphetを試すことをおすすめします。設定がシンプルで季節性を自動処理できるため、最初のモデルとして最適です。精度が不足する場合は、LightGBMに外部特徴量を追加する方向に進化させましょう。」

よくある質問(FAQ)

Q. Claude Codeを使うのにプログラミングの知識は必要ですか?
基本的には不要です。「こういうことをしたい」という日本語の説明をClaude Codeに入力するだけで、必要なPythonコードを自動生成してくれます。ただし生成されたコードを実行する環境(Python・ライブラリのインストール)は必要です。Claude Codeはそのセットアップ手順も丁寧に教えてくれます。
Q. 売上データが3ヶ月分しかありません。Claude Codeで予測できますか?
Claude Codeに「データが3ヶ月分しかない」と正直に伝えると、そのデータ量に適したモデル(線形回帰やARIMAなど)を選んでコードを生成してくれます。Prophetは年以上のデータが理想ですが、データが少ない場合の代替モデルもClaude Codeが提案してくれます。まず相談してみることをおすすめします。
Q. Claude Codeが生成したコードでエラーが出た場合はどうすればいいですか?
エラーメッセージをそのままClaude Codeに貼り付けて「このエラーが出ました、どう直せばいいですか?」と伝えるだけです。Claude Codeはエラーの原因を分析し、修正済みコードを再生成してくれます。多くの場合、1〜2回のやり取りで解決します。WindowsでのProphetインストールエラーなど、環境固有の問題にも対応してくれます。
Q. 季節性(繁忙期・閑散期)を考慮した予測をClaude Codeに頼めますか?
はい。「年末年始やゴールデンウィークの季節性を考慮した予測モデルにしてください」とClaude Codeに伝えると、Prophetのyearly_seasonality設定や日本の祝日カレンダーを組み込んだコードを生成してくれます。「業界固有の閑散期(例:8月)も考慮してほしい」といった細かい要件も日本語で伝えるだけで対応してもらえます。
Q. 生成されたコードをExcelに出力するにはどうすればいいですか?
本記事で紹介したコードにはすでにExcel出力機能が含まれています。グラフの見た目や数値シートのレイアウトを変更したい場合は、「グラフを横長にしてほしい」「列の順番を変えてほしい」など日本語でClaude Codeに追加でお願いするだけです。Claude Codeはopenpyxlのコードを修正して再生成してくれます。

関連記事

Claude Codeで売上予測を今日から始めよう

本記事で紹介したプロンプトをコピーして、Claude Codeに貼り付けるだけで売上予測コードが手に入ります。AI Factoryでは、Claude Codeを使った業務自動化の実践ノウハウを毎週発信しています。

Claude Codeを無料で始める

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: