# Scenario & Sensitivity Analysis Build Guide — SaaS DCF
## Step-by-Step Walkthrough
**1. Set Up the Scenario Input Block**
Create a dedicated "Assumptions" sheet. In rows 5–7, list the three drivers; in columns D–F, list Base/Bull/Bear values:
| Driver (C) | Base (D) | Bull (E) | Bear (F) |
|---|---|---|---|
| Revenue Growth | 25% | 35% | 15% |
| Gross Margin | 75% | 80% | 68% |
| Churn | 8% | 5% | 12% |
**2. Create the Scenario Selector Dropdown**
In cell `C2`, add Data Validation → List → Source: `Base,Bull,Bear`. This is your master toggle.
**3. Convert Selection to an Index**
In `C3`, translate the text into a column number:
```excel
=MATCH(C2,{"Base","Bull","Bear"},0)
```
**4. Pull Active Scenario Values with CHOOSE or INDEX**
In the "Live Assumptions" column `G5:G7`, reference the selected case:
```excel
=CHOOSE($C$3,D5,E5,F5)
```
Or equivalently:
```excel
=INDEX(D5:F5,$C$3)
```
Use `G5:G7` as the *only* inputs feeding your DCF — never hardcode.
**5. Link the DCF to Live Assumptions**
On your DCF sheet, reference `Assumptions!$G$5` for growth, `$G$6` for gross margin, `$G$7` for churn. Your Enterprise Value cell (e.g., `DCF!$B$50`) now updates dynamically when the dropdown changes.
**6. Build a Scenario Summary Output Table**
To view all three cases side-by-side without toggling, use a helper table that temporarily substitutes each scenario. Simplest method — use `CHOOSE` with scenario-specific EV calcs, or leverage **Scenario Manager** (Data → What-If Analysis → Scenario Manager → Add each case referencing `G5:G7`, then Summary).
**7. Construct the Two-Variable Sensitivity Table (WACC × Terminal Growth)**
On a "Sensitivity" sheet:
- Place WACC values across the top row (e.g., `C10:I10`: 8%–12%)
- Place terminal growth down the left column (`B11:B17`: 1%–4%)
- In the **top-left corner cell `B10`**, link to the EV output:
```excel
=DCF!$B$50
```
- Select the full range `B10:I17` → Data → What-If Analysis → **Data Table**
- Row input cell: your WACC driver cell (e.g., `DCF!$B$48`)
- Column input cell: your terminal growth cell (e.g., `DCF!$B$49`)
**8. Add Conditional Formatting to the Output**
Highlight the sensitivity grid with a 3-color scale (red→yellow→green) to visualize EV ranges quickly.
---
## Best Practices
- **Color coding:** Blue font = hardcoded inputs, Black = formulas, Green = cross-sheet links. Yellow fill for the scenario dropdown cell.
- **Naming conventions:** Use Named Ranges (`scn_Growth`, `scn_Margin`, `wacc`, `g_terminal`) via Formulas → Name Manager for readable formulas.
- **Audit checks:** Add a check row: `=SUM(G5:G7)-CHOOSE(C3,SUM(D5:D7),SUM(E5:E7),SUM(F5:F7))` should equal zero.
- **Isolate inputs:** All toggles live on one sheet; DCF sheet should contain zero hardcoded assumptions.
- **Lock structure:** Protect the sensitivity table (F9 recalcs only) and document the row/column input cells in a comment.
- **Sanity test:** Bull EV > Base EV > Bear EV — if not, trace your CHOOSE/INDEX wiring.
Building Scenario and Sensitivity Analysis in Excel Models
Tested prompts for scenario analysis in excel finance compared across 5 leading AI models.
You're building a financial model in Excel and someone just asked what happens if revenue drops 15%, or what the valuation looks like under bull, base, and bear cases. Hardcoding new numbers and saving three copies of the file is not the answer. You need scenario analysis that lets you flip a single input and watch the entire model recalculate, plus sensitivity tables that show how NPV, IRR, or EBITDA moves across a range of assumptions.
This page walks through how to structure scenario and sensitivity analysis inside an Excel finance model using Data Tables, CHOOSE, INDEX/MATCH, and the Scenario Manager, and how to use AI prompts to generate the setup quickly. The prompt and outputs below show four different AI models building the same scenario framework so you can see which approach fits your model.
If you're valuing a company, sizing a deal, building a budget, or stress-testing a forecast, scenario and sensitivity analysis is what turns a single-point estimate into a defensible range. Here's how to build it right.
When to use this
Use scenario and sensitivity analysis when your model has uncertain inputs that materially move the output, and when stakeholders need to see a range of outcomes rather than a single number. It works best on models with clearly separated assumptions, a single output you care about, and decision-makers who will ask what-if questions.
- DCF valuations where WACC, terminal growth, and revenue growth all swing the result
- LBO models testing entry multiple, exit multiple, and leverage against IRR and MOIC
- Three-statement operating models showing bull, base, and bear cases for board packs
- Capex or project finance models where commodity prices or utilization rates drive returns
- Budget vs. actual forecasts where you want to quantify downside risk before committing
When this format breaks down
- Models with more than three or four truly independent drivers, where Monte Carlo simulation in @RISK or Python will give you a better distribution than discrete scenarios
- Quick back-of-envelope math where the overhead of building a scenario switch costs more time than it saves
- Models with circular references or iterative calculations, where Data Tables can slow Excel to a crawl or produce inconsistent results
- Situations where the real question is structural (should we do this deal at all) rather than parametric (what return do we get at these inputs)
The prompt we tested
You are a financial modeling expert specializing in Excel-based scenario and sensitivity analysis. Based on the model context provided below, produce a clear, step-by-step guide showing how to build scenario analysis in Excel, including which functions to use (e.g., CHOOSE, INDEX/MATCH, Data Tables, Scenario Manager), how to structure input assumptions, how to toggle between Base/Upside/Downside cases, and how to display results. Follow these rules: Format the response as a numbered step-by-step walkthrough with concrete Excel formulas (in code formatting), cell reference examples, and a short final section on best practices (naming conventions, color coding, audit checks). Keep it under 500 words and focus on practical implementation, not theory. Model context: I'm building a 5-year DCF model for a SaaS company and need to run scenario analysis on revenue growth rate, gross margin, and churn. I want a Base, Bull, and Bear case with a dropdown to switch between them, plus a two-variable sensitivity table showing how enterprise value changes with WACC and terminal growth rate.
Model comparison
| Model | Quality | Cost | Latency | Tokens |
|---|---|---|---|---|
| Claude Opus 4.7 | 9 | $0.1109 | 22.0s | 376 / 1404 |
| Claude Haiku 4.5 | 8 | $0.0055 | 11.0s | 249 / 1054 |
| GPT-5.4 | Not run yet | |||
| Gemini 2.5 Pro | 7 | $0.0026 | 18.9s | 233 / 471 |
| Grok 4.1 Fast Reasoning | 9 | $0.0004 | 16.7s | 375 / 598 |
Outputs
# Excel Scenario Analysis Guide for SaaS DCF Model
## Step 1: Structure Your Assumption Inputs
Create a dedicated **Assumptions** sheet with three columns per variable:
| Metric | Base | Bull | Bear |
|--------|------|------|------|
| Revenue Growth Y1 | 25% | 40% | 15% |
| Gross Margin | 75% | 78% | 72% |
| Churn Rate | 5% | 3% | 8% |
| WACC | 10% | 8% | 12% |
| Terminal Growth | 3% | 4% | 2% |
Place these in cells A1:D6.
## Step 2: Create a Scenario Selector
In cell **B8**, add a Data Validation dropdown:
- Go to Data > Validation
- Allow: List
- Source: `Base,Bull,Bear`
In cell **B9**, create a formula to convert text to column position:
```excel
=MATCH(B8,{"Base","Bull","Bear"},0)
```
## Step 3: Build Dynamic Assumption References
In your **Model** sheet, reference assumptions dynamically using CHOOSE:
```excel
=CHOOSE($Assumptions.$B$9, $Assumptions.$B$2, $Assumptions.$C$2, $Assumptions.$D$2)
```
This formula references the scenario selector and pulls the corresponding assumption value. Copy this pattern for each input variable (revenue growth, margins, churn).
**Alternatively, use INDEX/MATCH** for more flexibility:
```excel
=INDEX($Assumptions.$B$2:$D$2, MATCH($Assumptions.$B$8, {"Base","Bull","Bear"}, 0))
```
## Step 4: Build Your DCF Model
Create a standard 5-year projection:
- **Row 15**: Year 1–5 revenue using the dynamic growth rate formula
- **Row 20**: Operating expenses (scaled from revenue)
- **Row 25**: Free cash flow calculations
- **Row 30**: NPV calculation using the dynamic WACC assumption
Example revenue formula in C15:
```excel
=C14*(1 + INDEX($Assumptions.$B$2:$D$2, CHOOSE($Assumptions.$B$9, 1, 1, 1)))
```
## Step 5: Build the Sensitivity Table (Two Variables)
Create a table showing Enterprise Value across WACC (rows) and Terminal Growth (columns).
**Row headers** (WACC): 6%, 8%, 10%, 12%, 14% (cells A45:A50)
**Column headers** (Terminal Growth): 1%, 2%, 3%, 4%, 5% (cells B44:F44)
In cell **B45**, use INDIRECT to dynamically reference assumptions:
```excel
=IFERROR(NPV(INDEX($Assumptions.$B$5:$D$5, $Assumptions.$B$9),
$Model.$C$25:$F$25) / (1 + WACC)^0 + TV / (1 + WACC)^5, "")
```
For a true two-way table, use **Data > What-If Analysis > Data Table**:
1. Set up formula in top-left cell referencing WACC and Terminal Growth
2. Select row/column input cells
3. Excel auto-fills combinations
## Step 6: Summary Output
Create a **Results** sheet displaying:
- **Enterprise Value** (links to NPV calculation)
- **Key metrics by scenario** (Revenue Y5, EBITDA margin, FCF)
```excel
=INDEX($Model.$C$35:$E$35, MATCH($Assumptions.$B$8, {"Base","Bull","Bear"}, 0))
```
## Best Practices
| Element | Action |
|---------|--------|
| **Naming** | Name ranges: `Scenario_Selector`, `Base_Assumptions`, `Bull_Assumptions` |
| **Color Coding** | Blue = Base, Green = Bull, Red = Bear assumptions |
| **Audit Trail** | Add formula auditing with Trace Precedents (Formulas > Trace) |
| **Freeze** | Freeze assumption rows so they're always visible while scrolling |
| **Error Handling** | Wrap formulas in IFERROR to catch circular references |
---
This setup allows instant scenario switching via dropdown while maintaining a clean, auditable model structure.
Here is a step-by-step guide to building scenario and sensitivity analysis for your DCF model in Excel.
### Building the Scenario Analysis
#### Step 1: Structure Scenario Assumptions
On a dedicated "Inputs" or "Assumptions" sheet, create a table to house your variables. This structure separates your scenarios, making them easy to manage and audit.
* In cell `B1`, create a label: "Scenario Selector".
* In cells `B4:E4`, enter the headers: `Driver`, `Base`, `Bull`, `Bear`.
* In cells `B5:B7`, list your drivers: `Revenue Growth Rate`, `Gross Margin`, `Churn`.
* Populate the values for each case in cells `C5:E7`.
| | B | C | D | E |
| :--- | :--- | :--- | :--- | :--- |
| **1** | **Scenario Selector** | **Base** | | |
| **2** | **Scenario Index** | 1 | | |
| **3** | | | | |
| **4** | **Driver** | **Base** | **Bull** | **Bear** |
| **5** | Revenue Growth Rate | 20.0% | 30.0% | 10.0% |
| **6** | Gross Margin | 75.0% | 80.0% | 70.0% |
| **7** | Churn | 5.0% | 3.0% | 8.0% |
#### Step 2: Create a Dropdown Selector
The dropdown allows you to toggle between scenarios.
1. Select cell `C1`. Go to **Data > Data Validation**.
2. Under "Allow:", choose **List**.
3. In the "Source:" box, type: `Base,Bull,Bear` and click OK.
4. In cell `C2`, use the `MATCH` function to convert the text selection into a number (1, 2, or 3). This number will drive the `CHOOSE` function.
```excel
1. **Create Scenario Selector**: In cell `B2`, use Data Validation (Data > Data Validation > List) with source `"Base,Bull,Bear"`. Label A2 as "Scenario".
2. **Build Assumptions Table**: In `A4:D7`:
```
A4: Variable B4: Base C4: Bull D4: Bear
A5: Rev Growth B5: 20% C5: 30% D5: 10%
A6: Gross Margin B6: 75% C6: 80% D6: 70%
A7: Churn B7: 5% C7: 3% D7: 8%
```
(Extend rows for Yr1-5 if needed; use arrays like `{20%,25%,...}`.)
3. **Link Model Inputs**: In input cells (e.g., `F5` for Rev Growth):
```
=INDEX($B$5:$D$5, MATCH($B$2, $B$4:$D$4, 0))
```
Copy to `F6` (Gross Margin), `F7` (Churn). Reference `F5:F7` in DCF revenue/churn formulas (e.g., Rev_t = Rev_{t-1} * (1 + F5)).
4. **Calculate Enterprise Value (EV)**: In `F10`, build DCF formula referencing inputs (e.g., NPV + Terminal Value). EV updates on scenario toggle.
5. **One-Way Scenarios (Optional CHOOSE Alt)**: For numeric toggle (1=Base,2=Bull,3=Bear), use:
```
=CHOOSE($B$2, B5, C5, D5) // In F5
```
6. **Two-Variable Sensitivity Table**: In `H15:M25`:
- `H15`: `=F10` (EV link).
- Row 15 (`I15:M15`): WACC variants (8%,9%,...,12%).
- Col H (`H16:H25`): Terminal growth (1%,1.5%,...,5%).
- Select `H15:M25` > Data > What-If Analysis > Data Table.
- Row input: WACC cell (e.g., `F8`); Col input: Term Growth cell (e.g., `F9`).
**Best Practices** (45 words):
- Name ranges (e.g., `RevGrowth= F5`); blue inputs, black calcs, green links.
- Color-code scenarios (Base=gray, Bull=green, Bear=red).
- Audit: Trace Precedents, F9 recalc; protect sheets; version control with Scenario Manager summary.
(298 words)
What makes these work
-
01Separate inputs from calculations
Put all scenario drivers on a single assumptions tab with clear labels and units. The model should pull from these cells only, never hardcode numbers inside formulas. This makes scenario switching one change instead of fifty.
-
02Use CHOOSE or INDEX over IF chains
A nested IF breaks when you add a fourth scenario. CHOOSE(scenario_number, bull, base, bear) or INDEX/MATCH against a scenario table scales cleanly and is easier to audit. Pair it with a data validation dropdown for a clean user experience.
-
03Color-code scenario inputs
Use a distinct fill color (yellow is standard) for every cell a user can change, and a different color for scenario-driven cells. Anyone opening the model knows what is live and what is calculated without reading documentation.
-
04Always show the active scenario
Display the selected scenario name prominently at the top of every output tab using a simple cell link. When someone screenshots the output or prints the model, the scenario label travels with it and prevents the wrong chart going into a board deck.
More example scenarios
Build a scenario switch for a SaaS DCF model with bull, base, and bear cases. Drivers: revenue growth (30%/20%/10%), gross margin (80%/75%/70%), and terminal growth (4%/3%/2%). Use a dropdown on the assumptions tab that drives the model via CHOOSE or INDEX.
Create a scenario table in A1:D5 with cases as columns and drivers as rows. Add a data validation dropdown in cell B1 referencing the scenario names. In each driver cell, use =INDEX($B$3:$D$3, MATCH($B$1, $B$2:$D$2, 0)) to pull the active case. Link the revenue, margin, and terminal growth inputs in your DCF to these cells. Toggle the dropdown to flip the entire model.
Create a two-variable Data Table showing sponsor IRR across entry EV/EBITDA multiples from 8x to 12x (step 0.5x) and exit multiples from 9x to 13x (step 0.5x). The IRR formula is already in cell F20.
Place exit multiples across row 24 (B24:J24) and entry multiples down column A (A25:A33). In cell A24, reference =F20. Select A24:J33, go to Data > What-If Analysis > Data Table. Set row input cell to the exit multiple assumption and column input cell to the entry multiple assumption. Format the output as percentages with conditional formatting to highlight the base case.
Use Excel's Scenario Manager to store four versions of an annual budget: Plan, Upside, Downside, and Recession. Changing cells are revenue growth, headcount adds, and marketing spend. Generate a summary report comparing EBITDA and cash balance across scenarios.
Open Data > What-If Analysis > Scenario Manager. Add each scenario with the three changing cells and their values. Click Summary, select EBITDA and ending cash as result cells. Excel generates a new sheet with all four scenarios side by side. For a cleaner solution on models you update often, replace this with a CHOOSE-based switch.
Build a one-variable sensitivity analysis showing project NPV across discount rates from 6% to 14% in 1% increments. NPV formula is in cell D15, discount rate input is in cell C8.
List discount rates 6% to 14% in cells B20:B28. In cell C19, reference =D15. Select B19:C28, Data > What-If Analysis > Data Table, leave row input blank, set column input cell to C8. Excel populates NPV for each rate. Add a chart plotting NPV vs. discount rate to visualize the crossover where NPV hits zero (the IRR).
Common mistakes to avoid
-
Overwriting the base case
Typing new numbers over your base case to test a scenario destroys your original assumptions. Always build a switch instead. If you must do a quick check, save a copy first.
-
Too many scenarios, no narrative
Seven scenarios with no story is worse than three with clear logic. Each scenario should tie to a specific thesis (recession, pricing pressure, successful product launch) so decision-makers can reason about which is likeliest.
-
Data Tables on slow models
Data Tables recalculate every cell for every combination. On a heavy model with 10,000 rows and volatile functions, this can freeze Excel. Set calculation to Automatic Except Data Tables under Formulas > Calculation Options when building.
-
Sensitizing on the wrong variables
Running sensitivities on inputs that barely move the output wastes time. Do a tornado analysis first to rank drivers by impact, then build detailed two-way tables only on the top two or three.
-
No version control on scenarios
If scenarios live only in Scenario Manager, they are invisible and easy to lose when someone copies the sheet. Build them as a visible table on the assumptions tab so they survive edits and audits.
Related queries
Frequently asked questions
What is the difference between scenario analysis and sensitivity analysis in Excel?
Scenario analysis changes multiple inputs at once to represent a coherent story (bull case changes revenue growth, margin, and churn together). Sensitivity analysis changes one or two inputs across a range to isolate their effect on the output. Use scenarios for narrative, sensitivities for driver ranking.
Should I use Scenario Manager or a manual scenario switch?
For most finance work, a manual switch using CHOOSE or INDEX/MATCH with a dropdown is better. It is visible, auditable, and survives file copies. Scenario Manager is fine for one-off stress tests but hides the logic in a dialog box.
How do I build a two-variable Data Table for IRR sensitivity?
Put one variable's range across a row, the other down a column, and place the IRR formula in the top-left corner where they intersect. Select the full block, then Data > What-If Analysis > Data Table, and point the row input cell and column input cell at your model's assumption cells.
Why is my Data Table showing the same number in every cell?
Usually the input cells are not actually driving your formula, or Excel's calculation mode is set to manual. Press F9 to force recalc, and trace precedents on the formula cell to confirm it depends on the cells you set as row and column inputs.
How many scenarios should a financial model have?
Three is the standard: base, upside, downside. Add a fourth (management case or stress case) only if it answers a specific question a stakeholder is asking. More than four and the comparison stops being useful.
Can I automate scenario analysis with AI in Excel?
Yes. You can prompt an LLM to generate the CHOOSE or INDEX formulas, build the scenario table structure, and even write VBA to toggle scenarios and export summary reports. The outputs shown on this page demonstrate how different models handle that request.