Skip to main content
Learning Center
Spreadsheets for Decisions

Model costs and alternatives

Scenarios and sensitivity

Drive one model from a scenario switch, vary two inputs at once to see which matters, and report a result at a precision its inputs support.

Lesson 12 of 18 in the recommended order · About 30 min (estimate)

On this page

Outcome

Drive one cost model from a scenario switch, build a two-way sensitivity block and identify which input moves the result further, and report a modelled figure with its range at a precision its inputs support.

Why it matters

A model produces a number to the penny from inputs that are guesses. The number is not more certain than the guesses, and it does not look less certain, which is the problem.

"The summer programme will cost £4,560.00" is a sentence a spreadsheet will happily produce from an enrolment nobody has confirmed and a coaching rate nobody has negotiated. The illustrated low and high scenarios produce about £2,800 and £7,100 — a spread nearly as large as the £4,560 base figure. These selected outcomes do not establish where the actual cost will fall. Reporting the pennies is not a small overstatement; it is a claim of precision the model cannot support, and people commit to budgets on the strength of it.

The remedy is not to refuse to give a number. It is to give the number with its range, to know which input the range mostly comes from, and to round to where the model is actually informative.

Concept

One model, one switch. Three scenarios kept as three copies of a sheet will diverge, because somebody will fix a formula in one of them. Keep one model and a small table of inputs — one column per scenario — and have the model's active assumptions fetch from that table according to a switch cell.

=INDEX(B5:D5, MATCH($B$2, $B$4:$D$4, 0))

MATCH finds which column the switch names; INDEX reads that position out of the row. A chain of IFs does the same job and is easier to read for three scenarios; INDEX and MATCH do not get longer as scenarios are added.

The test that it works is one edit: change the switch, and every active assumption and every derived figure moves together. If an active value fails to update, inspect its formula and references; it may be typed or may point at the wrong cell.

A scenario is a coherent set of assumptions, not a single dial. This exercise chooses fewer learners, fewer weeks and a lower coaching rate for its low scenario. That is an illustrative bundle, not evidence that those inputs generally move together. That is what makes it a scenario rather than a sensitivity.

Sensitivity holds the other inputs fixed while varying selected inputs. This two-way block varies two inputs across a grid, so you can see the shape of the answer rather than three points on it. It is the mixed-reference exercise from Module 1 in its natural home: one axis anchored to a column, the other to a row, everything else anchored on both.

=$A22*$B$11*B$21 + $B$11*$B$14

The learner count comes from column A, the rate from row 21, and the number of weeks from the active scenario, anchored so it does not move.

With the switch set to base, put its enrolment and rate in the middle of the block and compare the centre with the model above. Both use ten weeks then. After switching to low or high, the grid keeps its enrolment and rate axes but uses the newly active weeks, so its centre need not equal the active model.

Which input matters is a measurement, not an opinion. Take the spread along each axis: the range of results across the enrolment axis at the middle rate, and across the rate axis at the middle enrolment. For the selected input ranges at ten weeks, enrolment moves the total by 1,680 and the coaching rate by 672. That identifies the larger effect in this comparison; deciding which uncertainty to reduce also depends on how credible and controllable those ranges are.

Then report honestly. Three things belong together:

  • A rounded headline. If the spread is thousands, the pennies are noise. ROUND(total, -2) to the nearest hundred says what the model actually knows.
  • The scenario bounds. State the selected low and high outcomes as a range and name the assumptions behind them. They are not a probability interval or a guarantee on actual cost.
  • What the range does not cover. Three scenarios are three points, not a distribution, and nothing here says how likely any of them is. A model that has not been given a probability cannot produce one.

The temptation to resist is the one the spreadsheet creates: it will give you 4,560.00 whether or not that is meaningful, and 4,560.00 reads as a more careful answer than "about 4,600, and the selected scenarios run from about 2,800 to 7,100". The second one is the careful answer.

Worked example

Read the code

The scenario table, and the switch that drives the model:

                     low    base    high
Enrolment             72      96     120
Weeks                  8      10      12
Coaching rate       3.20    3.50    3.90
Active scenario:  base

Enrolment       =INDEX(B5:D5,MATCH($B$2,$B$4:$D$4,0))     96
Weeks           =INDEX(B6:D6,MATCH($B$2,$B$4:$D$4,0))     10
Coaching rate   =INDEX(B7:D7,MATCH($B$2,$B$4:$D$4,0))   3.50

Coaching   =$B$10*$B$11*$B$12                        3,360.00
Venue      =$B$11*$B$14                              1,200.00
Total                                                4,560.00

Change the switch to high and the three active assumptions and the three derived cost figures shown here change in one edit; the switch itself changes too. That is the whole benefit, and it is worth the ten minutes it costs to set up the first time.

The three totals are 2,803.20 low, 4,560.00 base, 7,056.00 high. Notice how far apart they are. The base case is not in the middle of that range — it is nearer the bottom — because this example’s high scenario combines three larger input values.

Compare scenario and sensitivity inputs

One scenario switch; a separate sensitivity grid

Switch: base is selected here

Low, base and high are chosen input bundles. Their outcomes are scenario examples, not probabilities or guaranteed bounds on actual cost.

Selected input bundles

Scenario table used by the switch
InputLowBaseHigh
Learners7296120
Weeks81012
Coaching rate£3.20£3.50£3.90
Low total
£2,803.20
Base total
£4,560.00
High total
£7,056.00

The active model reads one complete column; changing the switch updates all three fetched assumptions.

One active model

B2 = base

INDEX and MATCH fetch B10/B11/B12

Active learners
96
Active weeks
10
Active coaching rate
£3.50
Model total
£4,560.00

Changing the switch moves the active assumptions together; the model formulas stay in one place.

Two-input sensitivity axes

Sensitivity axes: coaching rate in pounds per learner per week; results are for the learner to calculate
Learners ↓ / rate →3.203.503.90
72costcostcost
96costcostcost
120costcostcost
Moves across
Coaching rate
Moves down
Enrolment

Weeks and venue rate stay at the active scenario values while the two displayed axes vary. This grid is not three scenario bundles.

Copy the grid formula

=$A22*$B$11*B$21+$B$11*$B$14

Column anchor
$A22: learners change down
Row anchor
B$21: coaching rate changes across
Fixed values
$B$11 weeks and $B$14 venue rate

The centre matches the model when base is selected. After switching scenarios, the axes stay fixed while the grid uses the newly active weeks.

Use the scenario table for coherent bundles and the sensitivity grid to isolate two input effects at the active number of weeks.

Predict the output

The sensitivity block varies enrolment down the side and coaching rate across the top, at the base scenario's ten weeks. Venue is 120 a week.

Predict these three.

the centre cell:   96 learners at 3.50
the top-left:      72 learners at 3.20
the spread across the enrolment axis, at 3.50
Show the three answers

The centre cell is 96 × 10 × 3.50 + 1,200, or 4,560.00 — and it has to be, because that is the base scenario, which is the model above it. With the switch on base, a disagreement would require investigation. With another scenario active, the centre uses that scenario’s weeks but still uses the fixed middle enrolment and rate.

The top-left is 72 × 10 × 3.20 + 1,200, or 3,504.00.

The spread across the enrolment axis at 3.50 is 5,400.00 minus 3,720.00, or 1,680.00. The equivalent spread across the rate axis at 96 learners is 4,944.00 minus 4,272.00, or 672.00.

Across these chosen ranges at ten weeks, the enrolment axis moves the result two and a half times as far as the coaching-rate axis. Use that comparison to guide further checks, while considering whether each range is realistic and how readily each input can be improved.

Modify the code

A model with three scenarios usually starts as three sheets. Combining them is one change of habit:

B10   96

becomes

B10   =INDEX(B5:D5,MATCH($B$2,$B$4:$D$4,0))

and the number 96 moves into the scenario table where it belongs, beside its low and high siblings.

For the sensitivity block, the anchoring is the whole trick:

=$A22*$B$11*B$21+$B$11*$B$14

$A22 — the enrolment, pinned to column A, free to move down. B$21 — the rate, pinned to row 21, free to move across. $B$11 and $B$14 — the weeks and the venue rate, pinned on both axes, because the block is priced at one number of weeks throughout.

Get the last one wrong and the block still fills with plausible numbers. Compare the centre cell with the model only while the switch is on base; for other scenarios, check the grid formula and the active weeks separately.

Finally the reporting cells, which are the ones nobody thinks to build:

=B5*B6*B7+B6*$B$14      low scenario total,   2,803.20
=D5*D6*D7+D6*$B$14      high scenario total,  7,056.00
=B33-B32                spread,               4,252.80
=ROUND(B19,-2)          rounded headline,        4,600

ROUND(x, -2) rounds to the nearest hundred. The negative second argument is worth knowing: -1 is the nearest ten, -3 the nearest thousand. Choosing which one to use is a judgement about how much the model knows, and it is a judgement worth making explicitly rather than by leaving the default.

Debug the bug

A committee is shown a model with low, base and high scenarios. The high case is cheaper than the base case. Nobody can see why, and the meeting stalls.

  1. Inspect each input and formula. Read the scenario table column by column and check what the labels mean. A lower high-scenario total can reflect an intended offset, a mislabeled assumption or a formula error; the total alone does not identify one reversed row.
  2. Ask what "high" means for each row. Document the scenario’s purpose and how each input contributes. A coherent bundle may mix increases and decreases, such as higher enrolment with a negotiated lower rate; label those choices so readers can judge them.
  3. Change one row at a time. Set the low and base to the same value for every row but one, and check the total moves the way you expect. Repeat per row. Five minutes, and it finds the row.
  4. Check the switch reaches every assumption. If an active assumption is typed or references the wrong scenario cell, the high result may mix inputs; inspect each fetch formula.
  5. Check the block's fixed inputs. A sensitivity block anchored to the wrong cell can produce plausible errors. With the switch set to base, compare its centre with the active model; otherwise inspect the grid references and active weeks directly.

The general shape: a scenario needs an explicit story for its assumptions and a verified formula path to its total. A surprising total calls for checking both.

Try it yourself

Drive the model from the switch, build the sensitivity block, measure which input matters, and decide how to report the result.

The last cell is a judgement rather than a calculation. The two above it give you what you need to make it.

Three scenarios, one switch, and a table that shows what matters

The summer programme's cost depends on three uncertain inputs. Rather than keeping three copies of the model, drive one model from a scenario switch. Then build a two-way table that varies enrolment and coaching rate together, work out which of the two moves the answer more, and decide how the result should be reported given how wide the range is.

  1. In B2, set the scenario to base.
  2. In B10 to B12, pull the active assumptions out of the scenario table using the switch. Changing B2 must change all three.
  3. In B17 to B19, build the cost model from the active assumptions.
  4. In B22 to D24, fill the sensitivity block: total cost for each enrolment and each coaching rate, at the active number of weeks.
  5. In B27 to B29, measure how far the total moves along each axis and say which input matters more.
  6. In B32 to B36, work out the low and high scenario totals, the spread between them, the rounded headline figure, and how the result should be reported.

This is a practice grid built for this course. It is not Excel and not Google Sheets, nothing you do here changes a file on your computer, and no spreadsheet application is involved.

Scenario!A1This cell is supplied; it is not editable.
Practice grid, sheet Scenario. Move with the arrow keys. Press Enter to edit a cell, Escape to cancel.
Row numberABCDEFGH
1Scenario switch
2Active scenario
3
4Scenario tablelowbasehigh
5Enrolment7296120
6Weeks81012
7Coaching rate per learner per week3.23.53.9
8
9Active assumptions
10Enrolment
11Weeks
12Coaching rate
13
14Venue per week120The same in every scenario.
15
16Cost model
17Coaching
18Venue
19Total
20Sensitivity: total cost by enrolment and coaching rate
21Enrolment3.23.53.9
2272
2396
24120
25
26Which input moves the answer more
27Spread across enrolment, at the middle rate
28Spread across rate, at the middle enrolment
29Input that moves the total more
30
31Reporting
32Total in the low scenario
33Total in the high scenario
34Spread from low to high
35Active total, rounded to the nearest hundred
36How this result should be reported
37
38
39
40

Sign in with your learning-center account to record attempts on this exercise. The grid works either way, and your work stays on this device.

Functions this grid understands

Anything else gives a #NAME? error. Arguments are separated by commas here; some regional settings in Excel and Google Sheets use semicolons instead.

  • ABS
  • AND
  • AVERAGE
  • AVERAGEIF
  • AVERAGEIFS
  • CONCAT
  • COUNT
  • COUNTA
  • COUNTBLANK
  • COUNTIF
  • COUNTIFS
  • DATE
  • DATEVALUE
  • DAY
  • EOMONTH
  • EXACT
  • FIND
  • IF
  • IFERROR
  • IFNA
  • INDEX
  • ISBLANK
  • ISERROR
  • ISNA
  • ISNUMBER
  • ISTEXT
  • LEFT
  • LEN
  • LOWER
  • MATCH
  • MAX
  • MID
  • MIN
  • MOD
  • MONTH
  • NA
  • NOT
  • OR
  • PROPER
  • RIGHT
  • ROUND
  • ROUNDDOWN
  • ROUNDUP
  • SEARCH
  • SQRT
  • SUBSTITUTE
  • SUM
  • SUMIF
  • SUMIFS
  • TEXT
  • TEXTJOIN
  • TODAY
  • TRIM
  • UPPER
  • VALUE
  • VLOOKUP
  • XLOOKUP
  • YEAR
What this practice grid does not do
  • Three scenarios are three points, not a distribution. This model says nothing about how likely any of them is, and nothing in it should be read as a probability.
  • The two-way table varies two inputs and holds the third fixed at the active scenario. A real programme could have all three move at once, and the spread from low to high is the honest way to say how far that could go.
  • This grid has no Data Table or Goal Seek feature. The block here is built from ordinary formulas, which is also how you would check what either of those produced.

Practical challenge (optional)

Take any estimate you have made recently — a project's duration, a cost, an amount of something needed — and give it a range.

  1. Write the estimate down as a single number, as you originally made it.
  2. Identify the two inputs it depends on most.
  3. For each, write a low and a high that you would not be surprised by. Not a worst case; a value you would not find remarkable.
  4. Compute the estimate at low-low and at high-high.
  5. Round the original estimate to the precision that range supports, and write the sentence: "about X, and plausibly between Y and Z".

Step 5 is the deliverable. Most estimates are given as a single number because that is what was asked for, and most of the value is in the range that was not.

Sign in to track your progress on this exercise.

Checkpoint

This module is finished when you can do all of these.

  • Explain why three scenarios in one model beats three copies of a model, and describe the one-edit test that it works.
  • Say what makes a scenario different from a sensitivity.
  • Describe the anchoring in a two-way sensitivity block, and say which references are pinned on both axes.
  • With the switch on base, say what the centre of this sensitivity block should equal; explain why the comparison changes under another switch setting.
  • Explain how to measure which of two inputs matters more, and what you would do with the answer.
  • Given a base figure of 4,560.00 and a range of 2,803 to 7,056, say how you would report the result and why.
  • Say what a three-scenario range does not tell you.

Sign in to track your progress on this exercise.

Summary and next step

A model is honest when one switch drives it, when a two-way block shows the shape of the answer rather than a point on it, when the larger effect among the tested input ranges has been measured, and when the headline figure is rounded to what the inputs actually support and quoted with its range.

That completes the fourth module. You can now build a cost model whose assumptions are visible, compare alternatives that are not quoted in the same terms, and say how far the answer could move.

Module 5 is about the last step, and it is the one where the most damage is done: putting the result in front of somebody. Summaries that flatter, charts that mislead without lying, and dashboards confident about data that only covers half the programme.

learning.goultergroup.com

The interactive parts of this page have not loaded. Reading and links still work; reload the page to try again.