Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Building Flexible Assumption Models | Scenario Analysis & What-If Modeling
Excel Forecasting & Scenario Analysis

Building Flexible Assumption Models

メニューを表示するにはスワイプしてください

Every forecast you built in Section 2 has one weakness: the assumptions are buried inside the formulas. To change the growth rate you edit a formula. To test a different margin you hunt through twenty cells. This works for personal analysis but breaks down the moment someone else uses your model — or when a stakeholder asks "what happens if growth is 5% instead of 8%?" and expects an answer in thirty seconds.

A flexible assumption model solves this by separating what you assume from what you calculate. All inputs live in one visible, clearly labeled place. All formulas reference that place. Changing one number instantly updates the entire model.

The Central Assumption Block

The assumption block is a dedicated area — typically at the top of a sheet or on its own tab — where every input the model depends on is listed explicitly. No hardcoded numbers anywhere else in the model. If a formula needs a growth rate, it points to the assumption block. Always.

A well-structured assumption block for a revenue forecasting model looks like this:

Each value in the Value column is either a direct input (typed number) or a link to a calculated cell from your KPI_Calculations sheet. Nothing is hardcoded inside a formula.

Naming Your Assumption Cells

Once your assumption block is built, name each input cell using Excel's Name Box (the field to the left of the formula bar). Named cells make formulas readable and prevent reference errors when rows are inserted or deleted.

  1. Select the Growth Rate cell → click the Name Box → type "Growth_Rate" → press Enter;
  2. Select the Margin cell → type "Gross_Margin" → press Enter;
  3. Select the Base Revenue cell → type "Base_Revenue" → press Enter.

Now instead of writing:

=$B$4 * (1 + $B$5)

You write:

=Base_Revenue * (1 + Growth_Rate)

The formula documents itself. Anyone opening the model understands immediately what it calculates without tracing references.

To manage all named ranges: Formulas → Name Manager. Use this to edit, delete, or audit every name in the workbook.

Building the Forecast Formula Chain

With named assumptions in place, every forecast calculation becomes a clean, readable chain. Here is how a full monthly revenue projection works using assumption cells:

Monthly growth factor (converts annual rate to monthly):

=( 1 + Growth_Rate ) ^ (1/12) - 1

Projected revenue for each forecast month:

  1. Month 1: =Base_Revenue * (1 + Monthly_Growth)
  2. Month 2: =Base_Revenue * (1 + Monthly_Growth)^2
  3. Month N: =Base_Revenue * (1 + Monthly_Growth)^N

Or more cleanly using the month number column:

=Base_Revenue * (1 + Monthly_Growth) ^ [@Forecast_Month_Num]

Projected gross profit:

=[@Projected_Revenue] * Gross_Margin

Net revenue after discounts and returns:

=[@Projected_Revenue] * (1 - Discount_Rate) * (1 - Return_Rate)

Every formula references a name, not a cell address. Change Growth_Rate from 8% to 12% and the entire projection updates instantly across all 12 forecast months.

Using Input Validation to Protect Assumptions

Assumption cells should only accept sensible values. A growth rate of 500% or a margin of -200% will silently produce nonsense forecasts without any warning. Data Validation prevents this:

  1. Select the Growth_Rate cell;
  2. Data → Data Validation → Settings;
  3. Allow: Decimal Between: -0.50 and 0.50;
  4. Input Message tab: Title "Growth Rate" Message "Enter as decimal, e.g. 0.08 for 8%";
  5. Error Alert tab: Style "Stop" Message "Growth rate must be between -50% and 50%".

Apply similar validation to every assumption cell with a logical boundary. This is not overengineering — it is the difference between a model that breaks silently and one that tells you when something is wrong.

Linking Assumptions to Historical Actuals

The most powerful assumption models don't ask you to type baseline values manually — they calculate them from your historical data automatically and use those as defaults. You can always override them, but the starting point is always grounded in reality.

Base_Revenue cell: =AVERAGE(OFFSET(Forecast_Input_Table[Total_Revenue], ROWS(Forecast_Input_Table[Total_Revenue])-12, 0, 12, 1))

This always pulls the average of the last 12 months of actual revenue, regardless of how many months of history you have. Add a new month of data and the base revenue updates automatically.

Similarly for margin:

Gross_Margin cell:

=SUMIF(Business_Data[Year], MAX(Business_Data[Year]), Business_Data[Profit]) / SUMIF(Business_Data[Year], MAX(Business_Data[Year]), Business_Data[Revenue])

This always calculates margin from the most recent full year in the dataset — no manual updates needed when new data arrives.

💡 Pro tip: Color-code your assumption block using the industry standard: blue text for cells the user should change, black text for cells that calculate automatically from historical data. Anyone who has worked in financial modeling will immediately understand which cells to edit and which to leave alone.

Note
Note

Task 1: Build the Assumption Block

Goal: Create a centralized, named, validated assumption block that drives all forecast calculations.

  1. Insert a new sheet and name it Assumptions. This sheet will be the control panel for all models in Section 3.
  2. Build the assumption table from this lesson with eight rows. Link Base_Monthly_Revenue to =AVERAGE(OFFSET(...)) using the last-12-months formula above. Link Gross_Margin to the most recent year formula.
  3. Type the remaining values manually: Growth_Rate (use your CAGR from KPI_Calculations), Discount_Rate and Return_Rate (use 2024 averages from Business_Data).
  4. Name every assumption cell using the Name Box. Use the exact names from this lesson so the formulas in later tasks work without adjustment.
  5. Apply Data Validation to Growth_Rate (−50% to 50%), Gross_Margin (0% to 100%), Discount_Rate (0% to 50%), and Return_Rate (0% to 20%).
  6. Color-code the block: blue text for manually entered inputs, black text for cells that link to historical data.

Task 2: Build the Assumption-Driven Forecast

Goal: Replace the hardcoded forecast formulas from Section 2 with a clean assumption-driven projection that updates when any input changes.

  1. In your Forecast_2025 table, add a new column Assumption_Forecast.
  2. In a helper cell, calculate Monthly_Growth using =(1+Growth_Rate)^(1/12)-1 and name it Monthly_Growth.
  3. In the first forecast row (Jan 2025), enter =Base_Revenue*(1+Monthly_Growth)^[@Forecast_Month_Num] and autofill down all 12 rows.
  4. Add a Projected_Profit column: =[@Assumption_Forecast]*Gross_Margin.
  5. Add a Net_Revenue column: =[@Assumption_Forecast]*(1-Discount_Rate)*(1-Return_Rate).
  6. Test the model: change Growth_Rate from its current value to 15%. Confirm all 12 forecast rows update immediately. Change it back to the original value.
  7. Add the Assumption_Forecast series to your master forecast chart. It should sit close to the Linear_Forecast line — if it diverges significantly, check that your Growth_Rate matches the CAGR you calculated in Section 1.
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  1
some-alt