How to Build a DCF Model in Google Sheets
Build and audit a five-year DCF through enterprise value, equity value, implied share price, and sensitivity analysis.
A discounted cash flow model estimates enterprise value by discounting forecast unlevered free cash flow and terminal value to the valuation date. This guide shows you how to build a five-year DCF in Google Sheets, bridge enterprise value to equity value, calculate implied share price, and test the result with two sensitivity tables.
The example values a company as of December 31, 2025, using annual year-end cash flows through December 31, 2030. Financial amounts are in USD millions, diluted shares are in millions, rates are percentages, per-share values are in USD, and valuation multiples are numeric values displayed with an x suffix. These assumptions aren’t recommendations for any company or industry.
What You'll Need
- Google Sheets and working knowledge of cell references
- Revenue, EBITDA margin, depreciation, capital expenditure, working-capital, and tax assumptions
- A documented WACC estimate
- Debt, cash, other claims, and diluted-share balances as of the valuation date
- Current share price if you want to compare market price with implied value
- Exactly 3 tabs named
Assumptions,DCF, andSensitivity - Comma formula separators; locales that use semicolons may require replacing commas with semicolons
Step-by-Step Guide
Enter the DCF assumptions
On Assumptions, enter these labels in A2:A12 and values in B2:B12.
| Cell | Assumption | Illustrative input |
|---|---|---|
| B2 | Valuation date | =DATE(2025,12,31) |
| B3 | Base revenue | $100.0 |
| B4 | Tax rate | 25.0% |
| B5 | WACC | 10.0% |
| B6 | Perpetuity growth | 3.0% |
| B7 | Exit EBITDA multiple | 8.0 |
| B8 | Debt | $50.0 |
| B9 | Cash | $15.0 |
| B10 | Other claims | $5.0 |
| B11 | Diluted shares (millions) | 20.0 |
| B12 | Current share price | $9.50 |
Enter the exit EBITDA multiple in B7 as the numeric value 8.0, not the text 8.0x. To display the suffix while preserving the numeric value, select B7, choose Format > Number > Custom number format, and apply:
0.0"x"
Enter =DATE(2025,12,31) in B2 and format the cell as a date. This approach avoids ambiguity in spreadsheet locales that interpret typed dates differently. You can also use the date picker or set a compatible spreadsheet locale.
The simplified bridge assumes that debt, cash, and other claims are mutually exclusive. In a real valuation, you may need to treat leases, minority interests, pensions, options, investments, tax assets, or other items separately.
Next, build the operating assumption schedule in A14:G19. Enter Date in A14, followed by this formula in B14:
=IFERROR(
IF(
AND(ISNUMBER($B$2),MONTH($B$2)=12,DAY($B$2)=31),
$B$2,
NA()
),
NA()
)
The outer IFERROR causes unparseable text in B2 to return #N/A instead of a #VALUE! error from MONTH or DAY.
Enter this formula in C14 and copy it through G14:
=IFERROR(
IF(ISNUMBER(B14),DATE(YEAR(B14)+1,12,31),NA()),
NA()
)
Together, these formulas use B2 as the single valuation-date input and derive each subsequent calendar year-end. Don’t replace B14:G14 with manually entered dates.
Enter the remaining assumptions as follows:
| Row | Label | B: 2025 | C: 2026 | D: 2027 | E: 2028 | F: 2029 | G: 2030 | |---|---|---:|---:|---:|---:|---:| | 14 | Date | Formula | Formula | Formula | Formula | Formula | Formula | | 15 | Revenue growth | Blank | 10.0% | 9.0% | 8.0% | 7.0% | 6.0% | | 16 | EBITDA margin | Blank | 20.0% | 21.0% | 22.0% | 23.0% | 24.0% | | 17 | D&A / Revenue | 3.0% | 3.0% | 3.0% | 3.0% | 3.0% | 3.0% | | 18 | Capex / Revenue | 4.0% | 4.0% | 4.0% | 4.0% | 4.0% | 4.0% | | 19 | NWC / Revenue | 10.0% | 10.0% | 10.0% | 10.0% | 10.0% | 10.0% |
The 2025 column represents the opening period. Leave 2025 revenue growth and EBITDA margin blank because the model doesn’t value a 2025 cash flow.
For the following controls, use Data > Data validation > Add rule and select Reject the input:
B2: custom formula=AND(ISNUMBER(B2),MONTH(B2)=12,DAY(B2)=31)B3andB7:B10: number greater than or equal to0B11:B12: number greater than0B4,C16:G16, andB17:G19: number between0and1B5: custom formula=AND(ISNUMBER(B5),B5>0,B5<=100%)C15:G15: number greater than-1B6: custom formula=AND(ISNUMBER(B6),B6>-100%,B6<$B$5)
Validation may not stop values introduced through pasted or imported data. For another layer of protection, the calculation formulas below inspect their source cells and return #N/A for blank, text, or out-of-range inputs.
Forecast revenue, EBITDA, and NOPAT
Set up DCF!A2:A20 with these row labels:
| Row | Label |
|---|---|
| 2 | Date |
| 3 | Revenue |
| 4 | Revenue Growth |
| 5 | EBITDA Margin |
| 6 | EBITDA |
| 7 | D&A % |
| 8 | D&A |
| 9 | EBIT |
| 10 | Tax Rate |
| 11 | NOPAT |
| 12 | Capex % |
| 13 | Capex |
| 14 | NWC % |
| 15 | NWC |
| 16 | Change in NWC |
| 17 | UFCF |
| 18 | Period |
| 19 | Discount Factor |
| 20 | PV of UFCF |
In DCF!B2, enter this date link and copy it through G2:
=IF(ISNUMBER(Assumptions!B14),Assumptions!B14,NA())
Then add opening revenue in B3:
=IF(
AND(ISNUMBER(Assumptions!B3),Assumptions!B3>=0),
Assumptions!B3,
NA()
)
For the first projected year, enter the revenue formula in C3 and copy it through G3:
=IF(
AND(ISNUMBER(B3),ISNUMBER(Assumptions!C15),Assumptions!C15>-100%),
B3*(1+Assumptions!C15),
NA()
)
Now link the forecast growth and EBITDA-margin assumptions:
C4: =IF(AND(ISNUMBER(Assumptions!C15),Assumptions!C15>-100%),Assumptions!C15,NA())
C5: =IF(AND(ISNUMBER(Assumptions!C16),Assumptions!C16>=0,Assumptions!C16<=100%),Assumptions!C16,NA())
Copy both formulas through column G, leaving B4:B5 blank.
Calculate EBITDA in C6, then copy the formula through G6:
=IF(
AND(ISNUMBER(C3),ISNUMBER(C5),C5>=0,C5<=100%),
C3*C5,
NA()
)
Enter the D&A percentage link in B7 and copy it through G7:
=IF(
AND(
ISNUMBER(Assumptions!B17),
Assumptions!B17>=0,
Assumptions!B17<=100%
),
Assumptions!B17,
NA()
)
Calculate D&A in C8 and copy through G8:
=IF(
AND(ISNUMBER(C3),ISNUMBER(C7),C7>=0,C7<=100%),
C3*C7,
NA()
)
Next, calculate EBIT in C9 and copy through G9:
=IF(AND(ISNUMBER(C6),ISNUMBER(C8)),C6-C8,NA())
Link the tax rate in C10, then copy through G10:
=IF(
AND(
ISNUMBER(Assumptions!$B$4),
Assumptions!$B$4>=0,
Assumptions!$B$4<=100%
),
Assumptions!$B$4,
NA()
)
The absolute reference prevents the assumption from shifting to another cell when you copy the formula to the right.
Finally, calculate NOPAT in C11 and copy through G11:
=IF(
AND(ISNUMBER(C9),ISNUMBER(C10),C10>=0,C10<=100%),
C9*(1-C10),
NA()
)
The expected operating forecast is:
| USD millions | 2026 | 2027 | 2028 | 2029 | 2030 |
|---|---|---|---|---|---|
| Revenue | $110.0000 | $119.9000 | $129.4920 | $138.5564 | $146.8698 |
| EBITDA | $22.0000 | $25.1790 | $28.4882 | $31.8680 | $35.2488 |
| D&A | $3.3000 | $3.5970 | $3.8848 | $4.1567 | $4.4061 |
| EBIT | $18.7000 | $21.5820 | $24.6035 | $27.7113 | $30.8427 |
| NOPAT | $14.0250 | $16.1865 | $18.4526 | $20.7835 | $23.1320 |
For 2026:
Revenue = $100.0 × (1 + 10.0%) = $110.0
EBITDA = $110.0 × 20.0% = $22.0
D&A = $110.0 × 3.0% = $3.3
EBIT = $22.0 - $3.3 = $18.7
NOPAT = $18.7 × (1 - 25.0%) = $14.025
Calculate unlevered free cash flow
Unlevered free cash flow excludes interest and debt repayments because the model accounts for financing through WACC and the enterprise-to-equity bridge.
UFCF = NOPAT + D&A - Capex - Change in NWC
Enter this capex-rate link in B12, then copy it through G12:
=IF(
AND(
ISNUMBER(Assumptions!B18),
Assumptions!B18>=0,
Assumptions!B18<=100%
),
Assumptions!B18,
NA()
)
In C13, enter the capex formula and copy it through G13:
=IF(
AND(ISNUMBER(C3),ISNUMBER(C12),C12>=0,C12<=100%),
C3*C12,
NA()
)
Link the NWC rate in B14 and copy through G14:
=IF(
AND(
ISNUMBER(Assumptions!B19),
Assumptions!B19>=0,
Assumptions!B19<=100%
),
Assumptions!B19,
NA()
)
Calculate the opening NWC balance in B15, then copy through G15:
=IF(
AND(ISNUMBER(B3),ISNUMBER(B14),B14>=0,B14<=100%),
B3*B14,
NA()
)
To calculate the annual change in NWC, enter this formula in C16 and copy through G16:
=IF(AND(ISNUMBER(C15),ISNUMBER(B15)),C15-B15,NA())
An increase in NWC is a use of cash, so the UFCF calculation subtracts it.
Enter the UFCF formula in C17 and copy through G17:
=IF(COUNT(C11,C8,C13,C16)=4,C11+C8-C13-C16,NA())
The expected cash flow schedule is:
| USD millions | 2025 opening | 2026 | 2027 | 2028 | 2029 | 2030 |
|---|---|---|---|---|---|---|
| Capex | - | $4.4000 | $4.7960 | $5.1797 | $5.5423 | $5.8748 |
| NWC | $10.0000 | $11.0000 | $11.9900 | $12.9492 | $13.8556 | $14.6870 |
| Change in NWC | - | $1.0000 | $0.9900 | $0.9592 | $0.9064 | $0.8313 |
| UFCF | - | $11.9250 | $13.9975 | $16.1985 | $18.4915 | $20.8320 |
The 2026 UFCF check is:
$14.025 NOPAT
+ $3.300 D&A
- $4.400 capex
- ($11.000 NWC - $10.000 opening NWC)
= $11.925 UFCF
Keep 2025 UFCF blank. The model uses the opening NWC balance once to calculate the 2026 change; it isn’t a separate cash flow.
Estimate WACC and discount the forecast cash flows
WACC should match the risk and financing basis of the unlevered cash flows. One framework is:
Cost of equity = Risk-free rate + Beta × Equity risk premium
After-tax cost of debt = Pre-tax cost of debt × (1 - Tax rate)
WACC = Equity weight × Cost of equity
+ Debt weight × After-tax cost of debt
Base the equity and debt weights on the capital structure relevant to the valuation. Document the source date and basis for every input. This example uses the final 10.0% WACC in Assumptions!B5, but it doesn’t imply that 10.0% is suitable for another company.
Derive the discount periods from the dates. Enter this formula in DCF!B18 and copy it through G18:
=IFERROR(
IF(
AND(ISNUMBER(B2),ISNUMBER($B$2)),
YEAR(B2)-YEAR($B$2),
NA()
),
NA()
)
The expected values in B18:G18 are 0, 1, 2, 3, 4, 5.
Add Date and Period Check in DCF!A21 and enter this formula in B21:
=IFERROR(
IF(
AND(
COUNT(B2:G2)=6,
B2=Assumptions!B2,
B2=DATE(YEAR(B2),12,31),
C2=DATE(YEAR(B2)+1,12,31),
D2=DATE(YEAR(B2)+2,12,31),
E2=DATE(YEAR(B2)+3,12,31),
F2=DATE(YEAR(B2)+4,12,31),
G2=DATE(YEAR(B2)+5,12,31),
COUNT(B18:G18)=6,
B18=0,
C18=1,
D18=2,
E18=3,
F18=4,
G18=5
),
"OK",
NA()
),
NA()
)
This control confirms that the schedule contains 6 consecutive calendar year-ends and assigns each forecast cash flow to the correct discount period. It checks the resulting values, not whether each source cell still contains its original formula. If formula lineage matters, review Assumptions!B14:G14 separately.
Leave B19:B20 blank. In C19, enter this discount-factor formula and copy it through G19:
=IF(
AND(
$B$21="OK",
ISNUMBER(Assumptions!$B$5),
Assumptions!$B$5>0,
Assumptions!$B$5<=100%,
ISNUMBER(C18),
C18>0
),
1/(1+Assumptions!$B$5)^C18,
NA()
)
Then enter this formula in C20 and copy it through G20:
=IF(AND(ISNUMBER(C17),ISNUMBER(C19)),C17*C19,NA())
This example uses year-end discounting.
| Year | Period | UFCF | Discount factor | PV of UFCF |
|---|---|---|---|---|
| 2026 | 1 | $11.9250 | 0.909091 | $10.8409 |
| 2027 | 2 | $13.9975 | 0.826446 | $11.5682 |
| 2028 | 3 | $16.1985 | 0.751315 | $12.1702 |
| 2029 | 4 | $18.4915 | 0.683014 | $12.6299 |
| 2030 | 5 | $20.8320 | 0.620921 | $12.9350 |
The expected sum of forecast-period present values is approximately $60.1442 million.
Calculate terminal value using 2 alternative methods
Terminal value captures cash flows after the explicit forecast. Calculate the perpetuity-growth and exit-multiple methods as separate cases.
Set up DCF!A23:C29 as follows:
| Row | Column A | Column B | Column C |
|---|---|---|---|
| 23 | Terminal Method | Perpetuity Growth | Exit Multiple |
| 24 | Terminal Value | Formula | Formula |
| 25 | PV of Terminal Value | Formula | Formula |
| 26 | Enterprise Value | Formula | Formula |
| 27 | Equity Value | Formula | Formula |
| 28 | Implied Share Price | Formula | Formula |
| 29 | Upside/(Downside) | Formula | Formula |
For the perpetuity-growth method, enter this formula in B24:
=IF(
AND(
$B$21="OK",
ISNUMBER(G17),
ISNUMBER(Assumptions!B5),
Assumptions!B5>0,
Assumptions!B5<=100%,
ISNUMBER(Assumptions!B6),
Assumptions!B6>-100%,
Assumptions!B5>Assumptions!B6
),
G17*(1+Assumptions!B6)/(Assumptions!B5-Assumptions!B6),
NA()
)
With the example inputs:
Terminal value
= $20.831960754 × (1 + 3.0%) ÷ (10.0% - 3.0%)
= $306.5274
For the exit-multiple method, enter this formula in C24:
=IF(
AND(
$B$21="OK",
ISNUMBER(G6),
ISNUMBER(Assumptions!B7),
Assumptions!B7>=0
),
G6*Assumptions!B7,
NA()
)
The calculation produces:
$35.248758336 terminal-year EBITDA × 8.0x = $281.9901
To discount each terminal value, enter this formula in B25 and copy it to C25:
=IF(AND(ISNUMBER(B24),ISNUMBER($G$19)),B24*$G$19,NA())
Enter this formula in B26 and copy it to C26:
=IF(
AND(COUNT($C$20:$G$20)=5,ISNUMBER(B25)),
SUM($C$20:$G$20)+B25,
NA()
)
The expected results are:
| USD millions | Perpetuity growth | Exit multiple |
|---|---|---|
| Terminal value | $306.5274 | $281.9901 |
| PV of terminal value | $190.3294 | $175.0936 |
| Enterprise value | $250.4736 | $235.2378 |
Don’t add the 2 terminal values together. They’re alternative valuation cases, not separate sources of value.
Bridge enterprise value to implied share price
The simplified bridge is:
Equity value = Enterprise value - Debt + Cash - Other claims
Implied share price = Equity value in USD millions
÷ Diluted shares in millions
Enter this formula in DCF!B27 and copy it to C27:
=IF(
AND(
ISNUMBER(B26),
COUNT(Assumptions!$B$8:$B$10)=3,
MIN(Assumptions!$B$8:$B$10)>=0
),
B26-Assumptions!$B$8+Assumptions!$B$9-Assumptions!$B$10,
NA()
)
For implied share price, enter this in B28 and copy it to C28:
=IF(
AND(
ISNUMBER(B27),
ISNUMBER(Assumptions!$B$11),
Assumptions!$B$11>0
),
B27/Assumptions!$B$11,
NA()
)
Calculate the market-price comparison in B29 and copy it to C29:
=IF(
AND(
ISNUMBER(B28),
ISNUMBER(Assumptions!$B$12),
Assumptions!$B$12>0
),
B28/Assumptions!$B$12-1,
NA()
)
When you copy the formulas from column B to column C, the valuation references move from B26:B28 to C26:C28. The locked debt, cash, other-claims, share-count, and market-price references remain in Assumptions!B8:B12.
The expected bridge is:
| Output | Perpetuity growth | Exit multiple |
|---|---|---|
| Enterprise value | $250.4736 | $235.2378 |
| Less: Debt | ($50.0000) | ($50.0000) |
| Add: Cash | $15.0000 | $15.0000 |
| Less: Other claims | ($5.0000) | ($5.0000) |
| Equity value | $210.4736 | $195.2378 |
| Diluted shares (millions) | 20.0000 | 20.0000 |
| Implied share price | $10.5237 | $9.7619 |
| Comparison with $9.50 market price | 10.8% | 2.8% |
These outputs are examples, not price targets or investment recommendations. Current market price is used only for comparison; it doesn’t determine the DCF value.
Build the WACC and terminal-growth sensitivity table
On Sensitivity, enter WACC cases in B2:F2:
8.0% | 9.0% | 10.0% | 11.0% | 12.0%
Enter terminal-growth cases in A3:A7:
1.0%
2.0%
3.0%
4.0%
5.0%
In B3, enter this formula and copy it across B3:F7:
=IF(
AND(
DCF!$B$21="OK",
COUNT(DCF!$C$17:$G$17)=5,
ISNUMBER(B$2),
B$2>0,
B$2<=100%,
ISNUMBER($A3),
$A3>-100%,
B$2>$A3,
COUNT(Assumptions!$B$8:$B$10)=3,
MIN(Assumptions!$B$8:$B$10)>=0,
ISNUMBER(Assumptions!$B$11),
Assumptions!$B$11>0
),
(
SUMPRODUCT(
DCF!$C$17:$G$17,
1/(1+B$2)^(DCF!$C$18:$G$18)
)
+DCF!$G$17*(1+$A3)/(B$2-$A3)/(1+B$2)^DCF!$G$18
-Assumptions!$B$8
+Assumptions!$B$9
-Assumptions!$B$10
)/Assumptions!$B$11,
NA()
)
Sensitivity!D5, where WACC is 10.0% and terminal growth is 3.0%, should equal the base perpetuity-growth result of $10.5237 per share.
A cell returns #N/A when WACC is less than or equal to terminal growth. With every other input held fixed, a lower WACC or higher terminal growth should increase the calculated value.
Build the operating sensitivity table
A second table can isolate changes to terminal-year revenue growth and EBITDA margin.
Enter the 2030 revenue-growth cases in Sensitivity!B11:F11:
4.0% | 5.0% | 6.0% | 7.0% | 8.0%
Enter the 2030 EBITDA-margin cases in A12:A16:
22.0%
23.0%
24.0%
25.0%
26.0%
In B12, enter this formula and copy it across B12:F16:
=IF(
AND(
DCF!$B$21="OK",
ISNUMBER(B$11),
B$11>-100%,
ISNUMBER($A12),
$A12>=0,
$A12<=100%,
ISNUMBER(Assumptions!$B$4),
Assumptions!$B$4>=0,
Assumptions!$B$4<=100%,
ISNUMBER(Assumptions!$B$5),
Assumptions!$B$5>0,
Assumptions!$B$5<=100%,
ISNUMBER(Assumptions!$B$6),
Assumptions!$B$6>-100%,
Assumptions!$B$5>Assumptions!$B$6,
COUNT(Assumptions!$B$8:$B$10)=3,
MIN(Assumptions!$B$8:$B$10)>=0,
ISNUMBER(Assumptions!$B$11),
Assumptions!$B$11>0,
COUNT(Assumptions!$G$17:$G$19)=3,
MIN(Assumptions!$G$17:$G$19)>=0,
MAX(Assumptions!$G$17:$G$19)<=100%,
COUNT(DCF!$C$20:$F$20)=4,
ISNUMBER(DCF!$F$3),
ISNUMBER(DCF!$F$15)
),
LET(
rev,DCF!$F$3*(1+B$11),
da,rev*Assumptions!$G$17,
ebitda,rev*$A12,
nwc,rev*Assumptions!$G$19,
fcf,(ebitda-da)*(1-Assumptions!$B$4)
+da
-rev*Assumptions!$G$18
-(nwc-DCF!$F$15),
pvExplicit,SUM(DCF!$C$20:$F$20)
+fcf/(1+Assumptions!$B$5)^5,
tv,fcf*(1+Assumptions!$B$6)
/(Assumptions!$B$5-Assumptions!$B$6),
(
pvExplicit
+tv/(1+Assumptions!$B$5)^5
-Assumptions!$B$8
+Assumptions!$B$9
-Assumptions!$B$10
)/Assumptions!$B$11
),
NA()
)
This table changes only the 2030 assumptions. The 2026-2029 forecasts remain fixed.
Sensitivity!D14, using 6.0% revenue growth and a 24.0% EBITDA margin, should equal $10.5237 per share. A matching result confirms that the center case follows the base model’s operating logic.
Audit the DCF before using its output
The checks below haven’t been executed here. Run them in a completed workbook and record each result.
| Check | Procedure | Expected result |
|---|---|---|
| 2026 UFCF | Calculate $18.700 × (1 - 25.0%) + $3.300 - $4.400 - ($11.000 - $10.000) | DCF!C17 equals $11.9250 |
| Revenue roll-forward | Compound $100.0 using 10.0%, 9.0%, 8.0%, 7.0%, and 6.0% | 2030 revenue equals $146.8698264 |
| Date boundary | Review Assumptions!B2, Assumptions!B14:G14, and DCF!B2:G2 | Dates run once, in order, from December 31, 2025, through December 31, 2030 |
| Period derivation | Review DCF!B18:G18 | The row equals 0, 1, 2, 3, 4, 5 |
| Date and period control | Review DCF!B21 | The cell displays OK |
| Invalid valuation date | In an unvalidated copy, replace Assumptions!B2 with the text not-a-date | Assumptions!B14, DCF!B2, DCF!B21, discount factors, terminal outputs, and sensitivity grids return #N/A |
| Invalid schedule date | Restore B2, then replace the formula in Assumptions!D14 with =DATE(2027,6,30) | DCF!D2 becomes June 30, 2027; DCF!B21 and affected valuation and sensitivity outputs return #N/A |
| Schedule-formula review | Restore Assumptions!D14, then inspect Assumptions!B14:G14 | B14 links to B2; each later cell derives the next December 31 date from the preceding cell |
| Control limitation | Replace Assumptions!D14 with the fixed value =DATE(2027,12,31) | DCF!B21 can remain OK because it validates the resulting date, not the presence of the original schedule formula |
| Invalid period | In an unvalidated copy, replace DCF!D18 with 99 | DCF!B21, valuation outputs, and both sensitivity grids return #N/A |
| Opening entry | Review DCF!B15:B20 | 2025 NWC is $10.0; 2025 UFCF and PV remain blank |
| NWC roll-forward | Compare each NWC balance with the immediately preceding period | Each change in NWC uses the prior-year balance |
| Forecast PV | Sum DCF!C20:G20 | Forecast-period PV is approximately $60.1442 million |
| Terminal value | Calculate $20.831960754 × 1.03 ÷ (10.0% - 3.0%) | Terminal value is $306.5274225 |
| Terminal discounting | Divide the terminal value by 1.10^5 | PV of terminal value is approximately $190.3294 |
| Enterprise value | Add $60.1442 forecast PV and $190.3294 terminal-value PV | Enterprise value is approximately $250.4736 |
| Equity bridge | Calculate $250.4736 - $50.0 + $15.0 - $5.0 | Equity value is $210.4736 |
| Per-share value | Divide $210.4736 million by 20.0 million shares | Implied value is $10.5237 per share |
| Copied bridge formulas | Review DCF!C27:C29 after copying from column B | The formulas still reference Assumptions!$B$8:$B$12, not column C |
| Zero inputs | Test zero revenue, tax, D&A, capex, NWC ratio, margin, debt, cash, other claims, and exit multiple separately | Valid zeros remain explicit zeros in dependent calculations |
| Invalid zero inputs | Set diluted shares, current price, or WACC to zero, or make WACC equal terminal growth | The affected valuation formula returns #N/A |
| Malformed inputs | In an unvalidated copy, paste a blank or text value into each numeric input, one at a time | Dependent calculations return #N/A, not an assumed zero |
| Bounds | Test tax and operating ratios below 0% or above 100%, revenue growth at -100%, and terminal growth at or above WACC | Typed entries are rejected or dependent formulas return #N/A |
| Terminal methods | Trace enterprise value under each method | Neither output adds the 2 terminal values together |
| Sensitivity reconciliation | Review Sensitivity!D5 and Sensitivity!D14 | Both equal approximately $10.5237 |
| Sensitivity direction | Reduce WACC or increase terminal growth while holding other inputs fixed | Calculated value increases |
| Claim classification | Reconcile debt, cash, and other claims to the same valuation date and inspect for overlap | No balance is counted in more than one bridge category |
The date tests serve different purposes. Changing Assumptions!B2 tests the valuation-date input and its downstream error handling. Changing Assumptions!D14 to June 30 tests the schedule-value control. Neither test proves that the schedule cells contain their intended formulas, so formula inspection remains a separate audit procedure.
Categorical-enum, approval-status, no-match lookup, transfer-pairing, and progress-direction tests don’t apply because this workbook contains no such fields or processes.
These checks address common DCF errors such as:
- Discounting levered cash flow at WACC
- Including interest expense or debt repayment in UFCF
- Reversing the sign of the change in NWC
- Treating opening NWC as another cash flow
- Using an inconsistent valuation date or discount-period sequence
- Allowing terminal growth to equal or exceed WACC
- Adding both terminal-value methods
- Mixing debt, cash, or claims from different dates
- Double-counting claims in the enterprise-to-equity bridge
- Dividing by basic shares when diluted shares are required
- Mixing whole-share counts with financial amounts in millions
- Copying formulas without locking assumption references
- Treating sensitivity outputs as evidence that assumptions are reasonable
ModelMonkey can inspect spreadsheet context and help read formulas, identify formula errors, analyze ranges, and propose cell or formatting changes in Google Sheets and Excel. For this workbook, ask it to review DCF!C17:G29, DCF!B21, Assumptions!B14:G14, and both sensitivity grids against the equations above. Review the assumptions and proposed edits, then rerun every control before relying on the valuation.
Use ModelMonkey to help review the DCF formulas and sensitivity ranges.
Wrapping Up
When entered as specified, the workbook should produce 2 separate enterprise values, bridge each one to equity value and implied share price, and reconcile both sensitivity-table center cases to the $10.5237 perpetuity-growth result. Its date, period, bounds, and source-cell checks distinguish valid zeros from malformed, out-of-range, or inconsistent inputs.
A passing reconciliation confirms that the formulas are internally consistent with the stated assumptions. It doesn’t establish that the WACC, terminal growth, exit multiple, operating forecast, or claim classifications are appropriate for a real company.
Frequently Asked Questions
What does a DCF valuation measure?
A DCF estimates value from the present value of forecast cash flows. An unlevered DCF discounts UFCF at WACC to calculate enterprise value, then adjusts for debt, cash, and other claims to reach equity value.
Why does this model use unlevered free cash flow?
WACC includes both the cost of equity and the after-tax cost of debt. Using UFCF avoids mixing financing cash flows, such as interest or debt repayment, into operating cash flows that are already discounted for capital-structure risk.
Should I use perpetuity growth or an exit multiple?
Use them as separate cases. The perpetuity-growth method links terminal value to long-run cash flow growth, while the exit-multiple method applies a market-based multiple to a terminal operating metric. Comparing the outputs shows how much the result depends on the terminal assumption, but neither method validates the other.
Why must the exit multiple be entered as 8.0 instead of 8.0x?
The formula requires a numeric input. Typing 8.0x makes the cell text, which causes the numeric check to fail and return #N/A. Enter 8.0 and apply the custom number format 0.0"x" if you want the cell to display 8.0x.
Why derive discount periods from dates?
A wrong period can materially change present value even when the cash flow and WACC are correct. Deriving periods from the date row and testing for the required 0-5 sequence keeps timing aligned with the forecast schedule.
Does the date control detect overwritten formulas?
Only when the overwrite changes a resulting date or period. If someone replaces a formula with the same expected date, DCF!B21 can remain OK. Inspect Assumptions!B14:G14 when you also need to confirm formula lineage.
Why must the equity-bridge assumption references be locked?
The 2 valuation cases occupy adjacent columns. Locking Assumptions!$B$8:$B$12 keeps the bridge inputs fixed when formulas are copied from column B to column C. Relative references such as B26 correctly move to C26.
Why must diluted shares be entered in millions?
The example records equity value in USD millions. Dividing by diluted shares in millions produces USD per share. If you enter a whole-share count, convert either equity value or the share count so the units agree.
What if WACC is less than or equal to terminal growth?
The perpetuity-growth formula isn’t valid under this model’s rules because its denominator becomes zero or negative. The formula therefore returns #N/A. Reassess the discount rate, terminal growth, forecast horizon, and steady-state economics instead of overriding the error.
Should current share price affect the DCF?
No. The DCF calculates implied value from operating cash flows and valuation assumptions. Current share price is included only for the illustrative upside or downside comparison.
When should I use XNPV?
Use XNPV when cash flows occur on irregular dates rather than equal year-end intervals. Include only one terminal value on the forecast-end date and confirm that no explicit-period cash flow is duplicated. This guide uses annual year-end periods.