How to decode and explain formulas in inherited excel financial models
- Step 1Open the model and find the driver cells — In a financial model the formulas worth explaining are the driver and roll-up cells — revenue build, debt schedule, circularity-prone interest lines. Click one and copy its text from the formula bar.
- Step 2Confirm Pro access — The Explainer is Pro and above. On Free it returns
Formula Explainer requires Pro tier.with no output. There is no size cap on the formula itself. - Step 3Paste one formula at a time — The single input is the
formulafield. Paste the cell's text (the leading=is optional). For a multi-cell pattern, paste a representative cell — the structure is identical across the fill range. - Step 4Capture the breakdown into your audit file — Copy the report text —
Formula:echo, separator, and the indented tree — straight into your working-paper note. Because it is deterministic, anyone re-running it gets the same evidence. - Step 5Flag the generic-labelled functions — If a node reads
NAME() — Excel function(e.g. SUMPRODUCT, OFFSET, INDIRECT), that function is valid but not described — note it as a 'check Excel docs' item, since OFFSET/INDIRECT in particular are volatile and audit-relevant. - Step 6Trace the data flow separately — The Explainer shows logic, not data flow. To see which cells feed a roll-up across sheets, pair it with the dependency map; to find broken or volatile references, use the error locator and external link auditor.
Finance-formula functions and how they render
The functions you meet most in inherited models, grouped by how the Explainer treats them. 'Labelled' means per-argument labels; 'described' means a prose line; 'generic' means NAME() — Excel function with arg numbers only.
| Function | Treatment | What the breakdown gives you |
|---|---|---|
IFERROR / IFNA | Described + labelled | expression: and fallback if error: / fallback if #N/A: |
INDEX / MATCH | Described + labelled | range:, row number:, column number: / lookup value:, lookup range:, match type: |
SUMIFS / COUNTIFS | Described + labelled (first pair only) | First range/criteria pair is labelled; extra criteria pairs show as arg 4:, arg 5: |
XLOOKUP | Described + labelled | All six args labelled, including if-not-found:, match mode:, search mode: |
ROUND / DATEDIF | Described + labelled | number: + decimal places: / start date:, end date:, unit: |
SUMPRODUCT | Generic | SUMPRODUCT() — Excel function plus the parsed array math underneath |
OFFSET / INDIRECT | Generic | Named and structured, but no prose — flag as volatile in your audit |
What the report actually contains
The Explainer outputs a single plain-text report (outputType report). There is no file download, no chart, no colour highlighting — it is text you read or copy.
| Part of the report | What it shows | Notes |
|---|---|---|
Formula: line | The cleaned formula, echoed back with a leading = added if you omitted it | Confirms exactly what was parsed |
A 60-character ─ rule | A visual separator | Pure formatting |
Step-by-step breakdown: | The heading for the tree | Always present |
| The indented tree | One line per node, indented two spaces per nesting level, outermost function first | This is the substance of the output |
Where the Formula Explainer fits in the tier and limit model
The Explainer reads a pasted formula string, not a file, so the byte/row/file ceilings that gate the file-based Excel tools are not the binding constraint here — the binding constraint is the Pro-tier gate. Numbers shown are the documented Excel-family limits for the file tools, for context.
| Tier | Formula Explainer access | Excel file-tool ceiling (context) |
|---|---|---|
| Free | No access — returns the error Formula Explainer requires Pro tier. | 5 MB / 10,000 rows / 1 file |
| Pro | Full access — paste any formula, unlimited explanations | 50 MB / 100,000 rows / 5 files |
| Pro-media | Full access | 200 MB / 500,000 rows / 20 files |
| Developer | Full access | 500 MB / unlimited rows / unlimited files |
| Enterprise | Full access | 2 GB / unlimited rows / unlimited files |
Cookbook
Formulas typical of inherited financial models, with the breakdown the tool produces. Sheet and cell names are illustrative.
IFERROR wrapping a cross-sheet VLOOKUP
The single most common 'inherited model' shape: a lookup against an assumptions tab, wrapped so a missing key shows blank rather than #N/A. The cross-sheet absolute range parses cleanly.
Paste:
=IFERROR(VLOOKUP(A1,Assumptions!$A$1:$D$50,3,0),"N/A")
Breakdown:
IFERROR() — Returns a value if a formula produces an error; otherwise returns the formula result
expression: VLOOKUP() — Searches for a value in the first column of a range and returns a value from another column
lookup value: cell reference A1
table range: cell range Assumptions!$A$1:$D$50
column index: number 3
exact-match flag: number 0
fallback if error: text "N/A"A multi-condition SUMIFS roll-up
Multi-criteria aggregation is everywhere in models. Note the labelling quirk: only the first range/criteria pair gets named labels; further pairs appear as arg 4, arg 5. The structure is still fully shown.
Paste: =SUMIFS(Detail!D:D,Detail!A:A,">100",Detail!B:B,"East") Breakdown: SUMIFS() — Adds values in a range that meet multiple conditions sum range: Detail!D:D criteria range 1: Detail!A:A criterion 1: text ">100" arg 4: Detail!B:B arg 5: text "East" (Sheet-qualified WHOLE-COLUMN ranges like Detail!D:D show without the 'cell range' prefix — the parser tokenises them as raw text. Use a row-bounded range like Detail!$D$2:$D$999 to get 'cell range'.)
A SUMPRODUCT conditional sum
SUMPRODUCT is the analyst's swiss-army knife and the most-inherited 'array' pattern. It is not on the description list, so it shows as a generic function — but the conditional factors inside are parsed in full so you can read the logic.
Paste:
=SUMPRODUCT((A2:A100=D2)*(B2:B100>0)*C2:C100)
Breakdown:
SUMPRODUCT() — Excel function
arg 1: multiplication (*)
left: multiplication (*)
left: equality test (=)
left: cell range A2:A100
right: cell reference D2
right: greater-than test (>)
left: cell range B2:B100
right: number 0
right: cell range C2:C100A LET-based calculation
Modern models use LET to name intermediate results. The tool describes LET, but it has no per-argument labels, so the name/value pairs show as sequential arg N and the names render as raw identifiers — read them in pairs.
Paste:
=LET(rev,B2,cost,C2,rev-cost)
Breakdown:
LET() — Assigns names to calculation results for use within a formula
arg 1: rev
arg 2: cell reference B2
arg 3: cost
arg 4: cell reference C2
arg 5: subtraction (-)
left: rev
right: costA quoted sheet name that breaks parsing
Finance tabs are often named with spaces and ampersands ('P&L 2026'). The apostrophe-quoted reference is not tokenised, so the formula dumps as a raw line. The fix is to rename the tab or strip the qualifier before pasting.
Paste: ='P&L 2026'!B12*1.05 Breakdown: 'P&L 2026'!B12*1.05 (The apostrophe is unrecognised, so no tree is built. Rename the sheet to 'PL2026' — then 'PL2026!B12*1.05' parses normally.)
Edge cases and what actually happens
Free tier blocked entirely
Pro requiredThe Explainer is gated to Pro and above. On Free it returns Formula Explainer requires Pro tier. with no partial output. There is no smaller free preview — the whole tool is behind the gate. Upgrade to Pro (or higher) to use it.
SUMIFS/COUNTIFS extra criteria pairs unlabelled
Partial labelsSUMIFS and COUNTIFS only carry named labels for the first range/criteria pair. A model formula with three or four conditions shows the first pair as criteria range 1: / criterion 1: and the rest as arg 4:, arg 5:, arg 6:. The arguments are all present and correctly nested — just count the positions: in SUMIFS the pattern is sum range, then range/criterion pairs.
LET/LAMBDA name bindings not paired
Generic argsLET and LAMBDA are described but have no per-argument labels, so their name→value pairs render as sequential arg N and the name tokens appear as raw identifiers rather than being tied to their values. Read LET arguments in pairs (name, value, name, value, …, final expression) to reconstruct the bindings.
Function name not in the description list
By designAny function that is not one of the 65 named ones — a valid-but-unlisted Excel function like SUMPRODUCT, OFFSET, or INDIRECT, a Google Sheets-only function like QUERY or ARRAYFORMULA, or a custom workbook UDF like MyMacro — renders as NAME() — Excel function (uppercased) with generic arg N labels. It is never mislabelled User-defined function and never throws; you still see the full nesting structure and every argument, just without a prose description of that one function.
Quoted sheet name with a space
Not parsedA reference like 'Sales 2026'!A1 uses an apostrophe, which the tokeniser does not recognise. From that apostrophe onward the rest of the formula is absorbed as one raw chunk: if the quoted ref is at the very start, the whole formula dumps as a single raw line; if it sits inside an argument, the surrounding functions parse but that argument swallows everything after the apostrophe — so any later arguments are dropped from the tree. Workaround: rename the sheet so it has no spaces (then Sales2026!A1 parses), or strip the '…'! qualifier before pasting if you only need the function structure.
Structured table reference
Column droppedExcel table syntax is not fully tokenised. Table1[Amount] keeps Table1 as a plain cell reference but drops the [Amount] column part. A reference that starts with a bracket, like [@Price], starts with an unrecognised character, so it and the rest of the formula dump as one raw line. Replace structured references with the equivalent A1 ranges before pasting if you need them in the tree.
Expecting a calculated result
By designThe Explainer is static analysis: it never evaluates the formula and never reads cell values, so it cannot tell you what =VLOOKUP(...) returns for your data — only what each part does and how the parts nest. To see a value, run the formula in Excel; to understand it, use this. For tracing which cells feed a result with real values, use the dependency map.
Same formula, different explanation?
Cannot happenThe breakdown comes from a deterministic recursive-descent parser, not a language model, so an identical formula always produces an identical tree. There is no temperature, no sampling, and no chance of an AI confidently inventing a function or mis-describing an argument — the descriptions are fixed text keyed to each function name.
Empty or whitespace-only input
No formula providedIf the formula box is empty or only whitespace, the tool returns No formula provided. rather than an empty tree. Paste the real formula text. A leading = is optional — it is added automatically if you leave it off.
Frequently asked questions
Can I use this to audit a model I can't run or unlock?
Yes. The tool needs only the formula text, not a working or unlocked workbook. Copy the text from the formula bar of any copy — even a protected one — and paste it. Nothing is uploaded and no cell values are read, so confidential assumptions stay in the file.
Is the breakdown defensible in audit working papers?
It is reproducible, which is the property audit cares about. The breakdown comes from a deterministic parser, not an AI, so re-running the same formula always yields the same tree. Paste the report text into your note as evidence; a reviewer who re-runs it gets identical output.
Why does my SUMIFS show 'arg 4' and 'arg 5'?
SUMIFS is labelled for its first range/criteria pair only — sum range:, criteria range 1:, criterion 1:. Any further criteria pairs render as arg 4:, arg 5:, and so on. The arguments are all correct and in order; the labels just stop after the first pair. Count positions to map them.
How does it handle LET and LAMBDA used in modern models?
Both are recognised and described, but they have no per-argument labels, so the name/value bindings show as sequential arg N and the names appear as raw identifiers. Read LET as repeating (name, value) pairs ending in the final expression. The nesting inside each value is still fully explained.
Why won't my formula with a sheet name like 'P&L 2026' parse?
The apostrophe in a quoted sheet name is an unrecognised character, so the formula dumps onto one raw line instead of a tree. Rename the tab to remove spaces and special characters, or strip the '…'! qualifier before pasting if you only need the function logic.
Does it warn me about volatile functions like OFFSET and INDIRECT?
Not as a warning, but it surfaces them: OFFSET and INDIRECT are not on the description list, so they render as NAME() — Excel function. Treat any generic-labelled node as a prompt to check the function's docs and, for OFFSET/INDIRECT specifically, to note the volatility/recalc cost in your audit.
Will it show me the model's numbers?
No — it is static analysis and never reads cell values. It explains the logic, not the result. To trace data flow with live values, use the dependency map; to find errors and broken links, use the error locator and external link auditor.
What about circular references common in debt schedules?
The Explainer analyses a single pasted formula's structure, not the workbook's reference graph, so it won't detect circularity. For that, use the circular reference finder, which scans the whole workbook for cycles.
Is the model's logic uploaded anywhere?
No. The parser runs entirely in your browser — the formula text never leaves your device, nothing is logged, and nothing is stored. This matters when the formula encodes confidential business logic (pricing rules, model assumptions, internal thresholds). The only server interaction is the tier check that confirms you are on Pro or above.
Does the model's file size matter?
No. Unlike the file-based Excel tools — which cap at 5 MB / 10,000 rows on Free up to 500 MB / unlimited on Developer — this tool takes a pasted formula string and never reads a workbook. There is nothing to upload, so the byte and row ceilings do not apply. If you want to explain formulas that live inside a workbook, open the file in Excel, copy the formula text from the formula bar, and paste it here.
Why does it require Pro?
The Formula Explainer is gated to Pro and above. On the Free tier the tool returns Formula Explainer requires Pro tier. and does nothing else. The gate is on the tool, not on formula size — there is no per-formula byte or character limit, because the input is a short string rather than a file. Pro, Pro-media, Developer, and Enterprise all have full, unlimited-explanation access.
What if I paste an empty cell's formula?
The tool returns No formula provided. — it does not guess or produce a blank tree. Paste the actual formula text, with or without the leading =; a missing = is added automatically before parsing.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.