この記事のポイント
Excel(エクセル)は、需要予測の初期ステップとして広く活用されている実務的なツールである
関数(AVERAGE・TREND・FORECASTなど)や分析ツールを活用することで、基本的な予測が可能
VBAやpythonを使うことで、移動平均計算・条件付き発注判定などの自動処理も実装できる
Excelには属人化・処理速度・外部要因の組み込みに限界があり、誤差やトラブルが生じやすい
より高精度な需要予測には、Pythonなどへの移行が現実的な選択肢となる

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。
需要予測は、在庫発注や仕入れの精度を高めるために欠かせない業務です。
多くの企業ではまずExcel(エクセル)を使って始めることが一般的です。
本記事では、エクセルを使った需要予測の方法、活用できる関数、テンプレート例、さらにはエクセル運用の限界とその後のステップについて、実務目線でわかりやすく解説します。
エクセルで需要予測はできるのか?
エクセル画面
エクセルを使って需要予測を行うことは、実務において十分に現実的な選択肢となります。特に中小企業や、現場の担当者レベルでの導入においては、専用ソフトを導入せずとも、エクセルだけで必要な予測業務をこなしているケースが多くあります。
エクセルは、以下のような特長を持っています。
- データ集計と可視化がしやすい:表とグラフを組み合わせて傾向を把握できる
- 関数でロジックを柔軟に定義できる:移動平均や回帰予測など基本的な分析が可能
- VBAによる自動化ができる:繰り返し処理や条件分岐の実装に適している
ただし、エクセルはあくまで表計算ソフトであり、データ量が増えたり、予測モデルが複雑になると処理限界に達しやすくなります。そのため、まずはエクセルで始めてみて、必要に応じてPython等を用いた実装にステップアップするのが現実的なアプローチです。
【関連記事】
需要予測をPythonで実装する方法|時系列分析から機械学習まで
需要予測に使えるエクセルの関数と機能(VBA含む)
需要予測をエクセルで実装するには、いくつかの基本的な関数と機能を組み合わせて使います。ここでは、手動操作による方法と、VBAによる自動化の双方を紹介します。
移動平均や回帰分析による基本予測
移動平均の実装例
代表的な関数として以下のものが挙げられます。
AVERAGE()
:一定期間の移動平均を算出するTREND()
:過去の傾向に基づいて将来値を予測するFORECAST.LINEAR()
:回帰直線を用いた単純予測LINEST()
:回帰分析を複数変数で行いたい場合に使用- データ分析ツールの「回帰分析」機能:GUIベースで重回帰などを実施可能
VBAによる自動化とロジックの拡張
関数だけでは限界がある場合、VBAを使うことで以下のような処理を自動化できます。
- 過去90日間の売上平均を自動計算し、予測数を別シートに記入
- 月末に予測結果を自動メール送信
- 発注残を考慮して、仕入れ必要数を自動算出
✅ VBAコード例:90日移動平均で予測し、閾値を超えたら発注
Sub PredictAndOrder()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("SalesData")
Dim i As Long
For i = 91 To ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
Dim avgSales As Double
avgSales = WorksheetFunction.Average(ws.Range("B" & i - 90 & ":B" & i - 1))
' 発注が必要な場合、C列にマーク
If avgSales > 150 Then
ws.Range("C" & i).Value = "発注必要"
End If
Next i
End Sub
このように、エクセル関数では表現しきれない業務ルールや分岐ロジックも、VBAを使えば自由に設計できます。
エクセルでのPython実行
以前は、Excelでの自動処理や複雑な業務ロジックの実装といえばVBA(Visual Basic for Applications)が主流でした。しかし近年では、Microsoft公式の「Python in Excel」機能の登場により、PythonをExcel上で直接実行できるようになり、選択肢が広がっています。
この新機能を活用することで、Pythonの豊富なライブラリ(例:Pandas, NumPy, Matplotlibなど)を使って、Excelの表計算・可視化・分析処理を大幅に強化できます。
✅ Python in Excel の主なメリット
- コードの再利用性が高い:Pythonで書いた処理を関数のように何度でも使える
- 処理が高速・柔軟:VBAよりも高速に大量データを処理可能
- AI・機械学習との親和性:需要予測における予測モデル(Prophet, scikit-learnなど)との連携が容易
- エクセルUIとの併用が可能:表やグラフでの可視化は従来通りExcelで操作できる
✅ 需要予測業務での活用例
- 90日移動平均の自動計算と発注判定の一括実行
- 季節性やプロモーション影響の分析(時間軸データ処理)
- Pythonライブラリによる高精度予測モデルの構築(例:Facebook Prophet)
実際の使い方
実際の実行画面
Python in Excel を使えば、Excel上で直接Pythonコードを動かし、より柔軟で再利用性の高い需要予測ロジックを実装できます。ここでは、90日間の売上移動平均を使った発注判定を例に、Python in Excel の実際の操作手順を紹介します。
① Excelに売上データを入力
まずは、Excelの A列に日付、B列に売上実績を入力します(180日分以上推奨)。
A列(日付) | B列(売上実績) |
---|---|
2025/01/01 | 142 |
2025/01/02 | 135 |
… | … |
② 「数式」タブ →「Python の挿入」→「エディター」を開く
- 任意のセル(例:C1)を選択し、エディターを開きます
- 下記のPythonコードを貼り付けます
③ Pythonコードを入力
import pandas as pd
# Excelのセル範囲からデータを取得(A2:B181)
df = xl("A2:B181", headers=True)
# 列名を明示(必要に応じて調整)
df.columns = ["日付", "売上実績"]
# 90日移動平均を算出
df["移動平均"] = df["売上実績"].rolling(window=90).mean()
# 平均が150を超えたら発注と判定
df["発注判定"] = df["移動平均"].apply(
lambda x: "発注必要" if pd.notnull(x) and x > 150 else "発注不要"
)
# 結果を表示(移動平均と発注判定)
df[["移動平均", "発注判定"]]
④ 実行すると…
- C列に「90日移動平均」、D列に「発注判定」が表示されます
- 発注必要とされた日だけにマークが付きます
⑤ 応用例
- 判定条件を変更(例:140以下なら補充など)
- 列を追加して「在庫数」「リードタイム」も考慮
- グラフで移動平均と実績の推移を可視化
Python in Excelは、VBAに比べて拡張性が高く、AI・データ分析との統合に最適な選択肢です。今後は、社内での予測業務や在庫最適化の場面でも、VBAからPythonへの移行が進んでいくと考えられます。
需要予測に使えるエクセルのテンプレート例
エクセルで需要予測を行う際は、あらかじめ構造化されたテンプレートを活用することで、入力ミスの防止や集計作業の効率化が図れます。ここでは、実務で使いやすい代表的なテンプレート例を3つ紹介します。
1.週次・月次の売上予測シート
最も基本的なテンプレートが、日別または週別の売上実績を記録し、その平均や傾向をもとに予測する形式です。
日付 | 売上実績 | 移動平均 | 予測売上 |
---|---|---|---|
2023/09/01 | 105 | ||
2023/09/02 | 120 | ||
… | … | =AVERAGE(B2:B8) | =TREND(...) |
AVERAGE
関数で移動平均を算出TREND
やFORECAST.LINEAR
で翌週の予測値を算出- 条件付き書式で閾値を超えるとアラート表示も可能
2.在庫管理と連動した需要予測表
在庫数や発注残を加味した、発注判断に直結するテンプレートです。
商品名 | 現在庫 | 予測需要 | 発注残 | 発注必要数 |
---|---|---|---|---|
商品A | 120 | 180 | 30 | =MAX(予測需要 - 現在庫 - 発注残, 0) |
- 予測需要列は、売上履歴に基づく関数やVBAで自動生成
- 発注必要数はゼロ未満にならないよう関数で制御
3.社内共有用グラフ付きレポート
需要の変動や予測結果を視覚的に共有したい場合は、グラフ付きテンプレートが有効です。
- 実績と予測を折れ線グラフで比較
- 月別の売上増減を棒グラフで表示
- VBAで「最新の週だけグラフ更新」などの自動化も可能
ActiveSheet.ChartObjects("Chart1").Chart.SeriesCollection(1).Values = _
ActiveSheet.Range("C2:C8") ' ← 移動平均や予測結果の反映に応用可
このようなテンプレートを用意することで、属人化を防ぎつつ、予測精度と運用効率の両立が図れます。
エクセルでの限界とトラブル例
エクセルは手軽で柔軟なツールですが、需要予測のように継続的な精度管理や複雑な要因の考慮が求められる業務では、次第に限界が表面化します。このセクションでは、実務でよく見られるエクセル運用上の課題を整理します。
手作業による属人化・ミス
- ファイルの複製・共有のたびに内容がずれ、担当者ごとに異なる予測ロジックが使われる
- 数式の修正漏れ、コピー時の参照崩れによって意図しない予測値が出る
- VBAを組んだファイルでも、メンテナンス担当者が不在になるとブラックボックス化
こうしたミスは、特に月次の発注や仕入れといった業務に直接影響を与えるため、属人化のリスクは非常に大きいといえます。
大量データへの対応が困難
- 数万行を超えると、ファイルの処理速度が著しく低下
- 重たいグラフや複雑なVBAを組み合わせると、フリーズやクラッシュが発生
- 他システムからのデータ連携が難しく、毎回コピー&ペーストが必要
エクセルは基本的に軽量な分析を想定しているため、大規模な時系列データや多商品展開の予測には不向きです。
複雑な要因を考慮しにくい
需要予測に影響する要因は、単純な過去の売上だけではありません。
- 曜日・祝日・天候・プロモーションなどの外的要因
- 他商品の影響やキャンペーン効果などの相関関係
こうした要因を関数やVBAで組み込むのは難易度が高く、再利用や汎用化もしづらいのが実情です。
このような課題が現れてきた段階が、エクセルからの移行を検討すべきタイミングといえるでしょう。
エクセルの次に進む需要予測の選択肢
エクセルでは対応が難しいと感じた場合、より高度で拡張性のあるツールやサービスにステップアップすることが検討されます。このセクションでは、エクセルから移行する際の現実的な選択肢を紹介します。
PythonやPower BIとの連携
可視化イメージ
Pythonは、無料で使えるプログラミング言語でありながら、高度な統計処理や機械学習による需要予測を実現できます。Excelで集めたデータをCSV形式で出力し、Pythonに取り込んで分析するのが一般的です。
一方、Power BIは、Microsoft製のBI(ビジネスインテリジェンス)ツールで、需要予測の結果をダッシュボード化して共有するのに適しています。
技術 | 強み | 弱み |
---|---|---|
Python | 高精度な予測・自動化が可能 | 習得に一定の技術知識が必要 |
Power BI | グラフやKPIの可視化に優れる | 単体では予測モデルを持たない |
中小企業が取り入れやすいステップアップ方法
段階的な移行を考える場合、以下のようなステップがおすすめです。
- まずはExcel + VBAで予測業務を定型化
- Excelの限界を感じたらPython・BIツールとのハイブリッド化
- 定着後、属人性や拡張性の課題をSaaSや内製システムで解消
このように段階的に取り組むことで、コストや教育コストを抑えつつ、予測精度と運用効率の両立を目指すことができます。
まとめ:Excelは需要予測の第一歩
エクセルは、初めて需要予測に取り組む企業や担当者にとって、非常に優れたスタート地点です。関数やグラフ、VBAなどを駆使することで、基本的な売上予測や発注判断までを手軽に実現できます。
ただし、エクセルには「属人化しやすい」「大量データに弱い」「外的要因の組み込みが難しい」といった限界があるのも事実です。こうした課題が現れた段階で、PythonやPower BIへの移行を視野に入れることで、業務の精度・再現性・効率性をさらに高めることができます。
まずは身近なExcelから始め、予測業務を日常業務の一部として定着させることが、将来的なデータ活用の大きな一歩となるでしょう。
AI総合研究所ではAIを活用した需要予測の実装支援を行っています。興味のある方はぜひご相談ください。