Audit XLS Skill
What is Excel Auditing?
Excel auditing is the process of systematically reviewing a spreadsheet for errors — broken formulas, hardcoded values that should be formulas, inconsistent calculations, and structural problems that could produce incorrect outputs. In financial services, where spreadsheet models drive investment decisions worth millions or billions of dollars, auditing is not optional — it is a critical quality control step. Financial models are complex systems. A typical 3-statement model might have thousands of cells with interdependent formulas across multiple tabs. Over weeks of development, multiple people edit the model: an analyst builds the initial version, an associate adds a scenario, a VP pastes in updated numbers, and an MD requests a last-minute change. Each edit creates opportunities for error:- A formula gets pasted over with a hardcoded number (looks right today but will not update when assumptions change)
- A SUM range misses a newly inserted row (totals are wrong but look plausible)
- Someone changes a formula in one row but not in the row below it (inconsistent patterns)
- A cross-tab reference breaks when a tab gets renamed or a row gets inserted
- A circular reference is introduced without anyone noticing
=0.106*0.80 + 0.04125*0.20. This produces 9.31%, which is correct. But the formula hardcodes all four inputs instead of referencing cells. Three months later, the risk-free rate changes from 4.0% to 4.5%. The analyst updates the risk-free rate input cell but the WACC does not change because it does not reference that cell. The entire DCF valuation is now wrong by approximately 3-5% — enough to shift a recommendation from “buy” to “hold.” The error is invisible because the WACC of 9.31% still looks reasonable.
Detailed Worked Example
Let us walk through a systematic audit of a simplified DCF model spreadsheet.Determine Scope and Initial Scan
Formula-Level Checks
| # | Tab | Cell | Error | Cause |
|---|---|---|---|---|
| 1 | BS | G18 | #REF! | References deleted column (was column F before restructure) |
| 2 | BS | G19 | #REF! | Same root cause — formula was =F19+E19, column F deleted |
| # | Tab | Cell | Issue | Value |
|---|---|---|---|---|
| 3 | IS | D15 | SG&A hardcoded as $45.2M instead of formula | $45.2M |
| 4 | CF | E30 | WACC hardcoded as 0.0931 instead of referencing Assumptions | 9.31% |
| 5 | CF | E35 | Terminal growth hardcoded as 0.025 instead of referencing Assumptions | 2.5% |
| 6 | IS | E12 | Revenue Year 2 hardcoded as $560M (should be =D12*(1+Assumptions!B8)) | $560.0M |
| # | Tab | Cell | Issue |
|---|---|---|---|
| 7 | IS | F15 | Year 3 SG&A uses =F120.18 but Years 4-5 use =F12Assumptions!12 |
| 8 | CF | D22 | Year 1 CapEx uses =D120.05 but Years 2-5 use =D12Assumptions!15 |
| # | Tab | Cell | Issue |
|---|---|---|---|
| 9 | IS | D20 | =SUM(D15:D18) but D14 (R&D expense) should be included. Correct: =SUM(D14:D18) |
Model Integrity Checks
| Period | Assets | L + E | Difference | Status |
|---|---|---|---|---|
| Year 0 | $450.0M | $450.0M | $0 | Pass |
| Year 1 | $502.3M | $502.3M | $0 | Pass |
| Year 2 | $558.1M | $555.8M | $2.3M | FAIL |
| Year 3 | $618.4M | $613.9M | $4.5M | FAIL |
| Year 4 | #REF! | #REF! | N/A | ERROR |
| Year 5 | #REF! | #REF! | N/A | ERROR |
| Period | CF Ending Cash | BS Cash | Difference | Status |
|---|---|---|---|---|
| Year 0 | $80.0M | $80.0M | $0 | Pass |
| Year 1 | $95.2M | $95.2M | $0 | Pass |
| Year 2 | $112.8M | $110.5M | $2.3M | FAIL |
| Period | Prior RE + NI - Div | Ending RE | Difference |
|---|---|---|---|
| Year 1 | 52.3 - $0 | $302.3M | $0 — Pass |
| Year 2 | 58.1 - $0 | $358.1M | $2.3M gap — the NI feeding RE is wrong due to the SG&A hardcode |
Why It Matters
The stakes of spreadsheet errors in finance are enormous:- Investment decisions — A DCF model with a broken formula might value a company at 35, leading to a recommendation to overpay for an acquisition.
- Client deliverables — A comps table with pasted-over formulas cannot be updated when new data arrives. The analyst will need to rebuild it from scratch.
- Regulatory filings — Models used for fairness opinions or SEC filings face legal scrutiny. Errors can have regulatory and legal consequences.
- Internal credibility — Presenting a model to an investment committee and having someone find an error undermines the entire analysis.
Key Concepts
| Term | Definition | Why It Matters |
|---|---|---|
| Hardcoded Override | A cell that should contain a formula but instead has a typed number. | The #1 source of silent bugs. The number looks right today but will not update when assumptions change. |
| Formula Error | Excel error values: #REF!, #VALUE!, #N/A, #DIV/0!, #NAME? | These are obvious when you look at them but easy to miss in a large model, especially on tabs you rarely visit. |
| Inconsistent Formula | A formula that breaks the pattern of its neighbors in a row or column. | If rows 5-9 all use =BC but row 7 uses =BD, that is likely an error. |
| Off-by-One Range | A SUM or AVERAGE that misses the first or last row of the intended range. | Common when rows are inserted or deleted. The total looks plausible but is wrong. |
| Circular Reference | A formula that directly or indirectly references itself. | Can be intentional (interest calculations) or accidental. Accidental circulars produce incorrect results. |
| Balance Sheet Balance | Assets = Liabilities + Equity. | If this does not hold for every period, the model has a structural error. Nothing else matters until this is fixed. |
| Cash Tie-Out | CF Ending Cash = BS Cash for every period. | If cash does not tie, there is a missing cash flow item or a broken link between statements. |
| Color Convention | Blue font = hardcoded inputs, Black font = formulas, Green = cross-tab links. | Helps auditors quickly identify which cells should be formulas and which are intentional inputs. |
How It Works
Triggers when: “audit this sheet”, “check my formulas”, “find formula errors”, “debug model”, “model won’t balance”, or “something’s off in my model.”Step 1: Determine Scope
| Scope | What It Covers |
|---|---|
| Selection | Just the currently selected range — quick formula checks |
| Sheet | The current active sheet — formula-level checks only |
| Model | The whole workbook — formula checks plus financial model integrity (BS balance, cash tie-out, roll-forwards, logic sanity) |
Step 2: Formula-Level Checks (All Scopes)
| Check | What to Look For |
|---|---|
| Formula errors | #REF!, #VALUE!, #N/A, #DIV/0!, #NAME? |
| Hardcodes inside formulas | =A1*1.05 — the 1.05 should be a cell reference |
| Inconsistent formulas | A formula that breaks the pattern of its neighbors |
| Off-by-one ranges | SUM/AVERAGE that misses the first or last row |
| Pasted-over formulas | Cell that looks like a formula but is actually hardcoded |
| Circular references | Intentional or accidental |
| Broken cross-sheet links | References to cells that moved or were deleted |
| Unit/scale mismatches | Thousands mixed with millions |
| Hidden rows/tabs | Could contain overrides or stale calculations |
Step 3: Model-Integrity Checks (Model Scope Only)
Balance Sheet:- Total Assets = Total Liabilities + Equity (every period)
- Retained Earnings rolls forward correctly
- If the BS does not balance, quantify the gap per period and trace the break point
- CF Ending Cash = BS Cash (every period)
- CFO + CFI + CFF = Change in Cash
- D&A, CapEx, and working capital changes tie to source schedules
- Revenue build ties to segment/product detail
- Tax expense = Pre-tax income x tax rate
- Share count ties to dilution schedule
DCF Bugs
DCF Bugs
- Discount rate applied to wrong period (mid-year vs. end-of-year convention)
- Terminal value not discounted back to present value
- WACC uses book values instead of market values
- FCF includes interest expense (should be unlevered)
- Tax shield double-counted
LBO Bugs
LBO Bugs
- Debt paydown does not match cash sweep mechanics
- PIK interest not accruing to principal balance
- Management rollover not reflected in equity returns
- Exit multiple applied to wrong EBITDA (LTM vs NTM)
- Transaction fees not deducted from Day 1 equity
Merger Model Bugs
Merger Model Bugs
- Accretion/dilution uses wrong share count (pre- vs. post-deal)
- Synergies not phased in over the integration period
- Purchase price allocation does not balance
- Foregone interest income on cash not included
3-Statement Model Bugs
3-Statement Model Bugs
- Working capital changes have wrong sign (increase in AR should be negative on CF)
- Depreciation does not match PP&E schedule
- Debt maturity schedule does not match principal payments
- Dividends exceed net income without explanation
Step 4: Report
Output a findings table with severity levels:| Severity | Meaning |
|---|---|
| Critical | Wrong output — BS does not balance, formula broken, cash does not tie |
| Warning | Risky — hardcodes, inconsistent formulas, edge-case failures |
| Info | Style/best-practice — color coding, layout, naming conventions |
Common Mistakes
1. Fixing symptoms instead of root causes
1. Fixing symptoms instead of root causes
2. Only checking formula cells and missing hardcodes
2. Only checking formula cells and missing hardcodes
3. Ignoring hidden tabs and rows
3. Ignoring hidden tabs and rows
4. Not testing edge cases
4. Not testing edge cases
5. Auditing formulas without checking logic
5. Auditing formulas without checking logic
6. Not verifying the circular reference handler
6. Not verifying the circular reference handler
7. Not checking cross-tab formula consistency
7. Not checking cross-tab formula consistency
8. Skipping the reasonableness check
8. Skipping the reasonableness check
Daily Workflow
Scenario 1: Pre-IC Model Review
Scenario 1: Pre-IC Model Review
- Set scope to “model” (full workbook audit)
- Check BS balance for all projection periods — this is the single highest-priority check
- Check cash tie-out for all periods
- Verify WACC inputs match current market data (risk-free rate, beta, ERP)
- Check that the sensitivity table center cell equals the base case output
- Scan for hardcoded overrides in the projection columns
- Verify terminal value as a percentage of EV (flag if >75%)
- Report findings with severity levels. Critical findings must be fixed before IC. Warnings can be noted and fixed after.
Scenario 2: New Analyst's First Model
Scenario 2: New Analyst's First Model
- Full model audit: formula-level checks + integrity checks + logic checks
- Pay special attention to: working capital signs (the #1 first-model error), RE roll-forward, and D&A consistency
- Check that all inputs have cell comments citing their source
- Verify that projection formulas reference the Assumptions tab (not hardcoded rates)
- Test with scenario toggle: do all three scenarios produce reasonable outputs?
- Run edge cases: 0% growth, negative EBITDA
- Provide a marked-up list of findings for the analyst to fix, organized by priority
- Re-audit after fixes to verify nothing was introduced during the repair
Scenario 3: Debugging a Model That 'Won't Balance'
Scenario 3: Debugging a Model That 'Won't Balance'
- Check the BS balance row for every period. Identify the first period where the gap appears.
- In that period, check the RE roll-forward: Prior RE + NI - Dividends = Ending RE. If this does not hold, the error is in the NI calculation or the RE formula.
- If RE ties, check the cash tie-out: CF Ending Cash = BS Cash. If cash does not tie, there is a missing cash flow item.
- If cash ties, check PP&E: Beginning PP&E + CapEx - D&A = Ending PP&E.
- If PP&E ties, check debt: Beginning Debt - Repayments + New Issuances = Ending Debt.
- The error is almost always in one of these four areas. Once found, fix the root cause and verify all subsequent periods automatically correct.
Practice Exercise
Scenario: You receive a 3-statement model for a retail company and are asked to audit it before an investment committee presentation. The model has 3 tabs (IS, BS, CF) plus an Assumptions tab. Given the following findings from your initial scan:- BS balances in Years 0-2 but shows a $1.5M gap in Year 3
- Two cells on the IS show #DIV/0! errors (Years 4-5 tax rate calculations)
- The CF tab has a hidden row (Row 45) containing an old WACC calculation
- Year 2 SG&A on the IS is 82.0M but the Assumptions tab shows SG&A should be 18% of revenue (88.2M revenue x 18% = $15.9M? That does not make sense)
- The sensitivity table shows the same value ($24.50) in all 25 cells
- D&A on the CF is 12.0M but D&A on the IS is 14.5M
- Classify each finding as Critical, Warning, or Info
- For the BS imbalance, describe the debugging process you would follow
- For the #DIV/0! errors, identify the most likely cause and fix
- For the sensitivity table, explain why all cells show the same value and how to fix it
- For the D&A mismatch, trace the likely impact on other parts of the model