Data Analytics

Sales Forecasting Model

Predict revenue trends based on historical data and market indicators

Get this built around your data

✓ Free to download  ·  ✓ Excel 2016+ and Google Sheets  ·  ✓ Custom version in 24h

A forecast is a claim about the future that should be checkable afterwards. This template stores each forecast alongside what actually happened, so the error is measured rather than argued about.

What the worksheet looks like

The actual columns, with sample rows

Forecast sheet: prediction and outcome kept together, so accuracy is measurable.
ABCDEFG
1MonthBaselineSeasonalForecastActualError %
22026-05412,0001.04428,480441,200+3.0%
32026-06418,0000.97405,460398,100-1.8%
42026-07424,0000.89377,360372,900-1.2%
52026-08430,0000.91391,300

The formulas that do the work

Why each one is written the way it is

  • =FORECAST.ETS([@Month], History[Actual], History[Month], 12) Exponential smoothing with a 12-period season length. It handles trend and seasonality together, which a trailing average does not.
  • =AVERAGEIFS(History[Actual],History[MonthNum],[@MonthNum])/AVERAGE(History[Actual]) The seasonal index for each calendar month, derived from your own history rather than assumed.
  • =([@Actual]-[@Forecast])/[@Forecast] Signed forecast error. Keeping the sign matters — consistent optimism is a different problem from random noise, and only the sign distinguishes them.
  • =AVERAGE(ABS(Forecast[Error %])) Mean absolute percentage error across the period. Below 10% is good for monthly revenue; above 25% means the model is not capturing something you know about.

Discovering a systematic bias

A worked example with real numbers

A distributor's forecasts were within 5% most months, which everyone considered good. Storing the signed error revealed that eleven of twelve months were over-forecast — the pipeline conversion assumption was too generous, and the error only looked small because it was consistent. Adjusting the assumption cut the mean absolute error from 4.8% to 2.1% and, more usefully, removed the quarter-end scramble that the persistent shortfall had been causing.

What is in the workbook

Tab by tab

Every tab in the workbook and what it is for.
TabContents
HistoryActuals by month, the input to every model.
SeasonalDerived seasonal indices with the periods they came from.
ForecastForecast, actual and error, retained for every past period.
AccuracyMAPE and bias over rolling windows.
READMEHow much history the model needs and when to re-fit it.

Features and related templates

What is included, and what to look at next

What it does

  • Trend analysis
  • Seasonal adjustments
  • Market indicators
  • Statistical modeling
  • Scenario planning
  • Accuracy tracking
  • Variance analysis
  • Visualization tools

Need it adapted?

  • Built around your own data and column names
  • Connected to your source system
  • Delivered within 24 hours

Questions about this template

Specific to this workbook, not generic

How much history do I need?

Two full seasonal cycles minimum — 24 months for monthly data. With less, the model cannot separate trend from season and will project last year's noise forward.

Why keep old forecasts?

Because otherwise you cannot tell whether the model is any good. Overwriting the forecast with the actual leaves you with a history of what happened and no measure of what you predicted.

Does FORECAST.ETS work in Google Sheets?

Sheets has FORECAST and TREND but no ETS equivalent, so the template falls back to a seasonal index applied to a linear baseline. It is less sophisticated and, on most business series, within a point or two.

"This forecasting model has transformed our sales planning process. The accuracy of predictions has helped us make better strategic decisions."

- Mark S., Sales Director