Excel Formula Errors: Causes, Fixes, and Debugging
An Excel error value is a diagnostic clue, not a result to erase as quickly as possible. #REF! points toward a broken reference, #VALUE! often signals incompatible data, and #SPILL! means a multi-cell result cannot occupy the grid as requested.
The fastest repair usually comes from identifying the error family, checking the inputs it depends on, and isolating the first part of the formula that fails. Only after the underlying formula works should you decide whether users need a friendlier fallback.
Start with the error code
| Error | What it usually indicates | First check |
|---|---|---|
##### |
A display problem rather than a formula error | Column width and negative date or time values |
#NAME? |
Excel does not recognize part of the formula text | Function names, defined names, quotation marks, and range punctuation |
#VALUE! |
An argument or referenced value has an unsuitable type | Numbers stored as text, hidden characters, dates, and function arguments |
#DIV/0! |
A formula divides by zero or a blank cell | The denominator and missing-input rules |
#REF! |
A cell or range reference is no longer valid | Deleted rows, columns, or sheets, plus invalid lookup indexes |
#N/A |
A requested value is not available or cannot be found | Lookup value, match mode, spaces, and data types |
#NUM! |
A numeric argument or result is invalid | Function limits, impossible inputs, and iterative calculations |
#NULL! |
Two ranges have no intersection | An accidental space between range references |
#SPILL! |
A multi-cell result cannot fill its intended spill range | Blocking cells, merged cells, table placement, and worksheet edges |
#CALC! |
The calculation engine encountered an unsupported array or calculation case | Empty array results, nested arrays, and function-specific constraints |
|
| A single worksheet can display several Excel formula errors at once, making it easier to identify the error family before troubleshooting the formula. |
This table gives a starting point, not a diagnosis by itself. The same code can have several causes, and an error shown in one cell may have originated in an upstream cell.
Use a repeatable debugging sequence
- Select the error cell. Read the complete formula in the formula bar and open the warning button when Excel displays one.
- Inspect the inputs. Check referenced cells for blanks, zeros, error values, numbers stored as text, unexpected spaces, and moved or deleted ranges.
- Compare nearby formulas. A formula that differs from the rows above and below may contain a shifted reference or a missing absolute reference.
- Evaluate the formula in stages. On supported desktop versions, use Formulas > Evaluate Formula to step through nested operations.
- Trace the source. Use Trace Precedents to follow cells feeding the result and Trace Dependents to see where a suspect input is used.
- Test the smallest failing expression. Put a lookup, conversion, or arithmetic subexpression in a temporary cell so you can confirm its inputs and result separately.
- Repair before handling. Confirm that valid inputs produce the correct answer before adding
IFNA,IFERROR, or another fallback.
Microsoft’s broken-formula checklist covers syntax, separators, references, and formula evaluation. Formula-auditing tools can be more limited in Excel for the web and mobile apps, so a difficult workbook may need to be opened in the desktop application.
Fix syntax and name errors
#NAME? means Excel cannot identify formula text
A misspelled function is a common cause:
=SUMM(B2:B6)
|
| A misspelled function name such as SUMM causes Excel to return #NAME?, while correcting it to SUM produces the expected result. |
Changing SUMM to SUM resolves the error. Other causes include a misspelled or undefined named range, omitted quotation marks around text, a missing colon in a range, or a function supplied by an unavailable add-in.
For example, this formula treats Closed as a name because it is not enclosed in quotation marks:
=IF(A2=Closed,1,0)
The corrected test is:
=IF(A2="Closed",1,0)
Use Formula AutoComplete and the function tooltip to reduce typing mistakes. Microsoft’s #NAME? guide recommends correcting the syntax rather than masking this error with an error handler.
#NULL! often comes from the wrong range operator
A space between two references is Excel’s intersection operator. If the ranges do not cross, the result is #NULL!:
=SUM(B2:B6 D2:D6)
If the intention is to add two separate ranges, use a list separator:
=SUM(B2:B6,D2:D6)
If the intention is one continuous block, use a colon, such as =SUM(B2:D6). A space can be valid in an intentional intersection formula, so confirm the intended geometry before removing it.
Fix input and arithmetic errors
#VALUE! points to incompatible data or arguments
Suppose A2 contains a quantity and B2 is expected to contain a numeric rate. If B2 instead contains the text pending, this formula returns #VALUE!:
=A2*B2
|
| A #VALUE! error can occur when a formula expects a number but one of the referenced cells contains text instead. |
Check whether imported numbers are stored as text, whether an apparently blank cell contains a space, and whether dates are genuine Excel dates. Functions such as ISTEXT, ISNUMBER, TRIM, and CLEAN can help diagnose or normalize the source, but they should not be applied blindly to every column.
#VALUE! is broad because each function has its own argument requirements. Microsoft’s #VALUE! troubleshooting guide recommends using Evaluate Formula to locate the part of a longer expression that fails.
#DIV/0! means the denominator is zero or blank
=C2/D2
If D2 is zero or empty, Excel returns #DIV/0!. First decide what the missing or zero denominator means. If the ratio should wait for an input, test for that condition explicitly:
=IF(D2=0,"",C2/D2)
|
|
| Use an IF formula to test whether the denominator is zero before dividing, so the worksheet returns a blank instead of a #DIV/0! error. |
An empty string keeps the output visually blank. Returning 0 instead would assert that the ratio is zero, which may be a different business meaning. The Microsoft #DIV/0! guide confirms that both zero and blank denominators can trigger the error.
#NUM! signals an invalid numeric case
This formula returns #NUM! because a real square root of a negative number is not available through SQRT:
=SQRT(-9)
|
| The SQRT function returns #NUM! when the input is a negative number because Excel cannot return a real square root for that value. |
The same error family can appear when an iterative function such as IRR or RATE cannot find a result, or when a calculated number is outside Excel’s supported range. Fix the assumption or input domain; increasing iterations is appropriate only when the model itself is valid and convergence is the real issue. See Microsoft’s #NUM! guidance for these cases.
Fix broken references and missing matches
#REF! means a reference is invalid
Deleting a referenced row, column, cell, or worksheet can leave #REF! inside a formula. If the deletion was accidental and recent, Undo is often the safest recovery. Otherwise, identify the missing source and rebuild the reference from the intended data.
|
| Deleting a referenced column can leave #REF! inside dependent formulas, indicating that part of the original reference is no longer valid. |
Do not simply delete the #REF! token without understanding its role. A formula such as =B2+#REF! may still calculate after the broken term is removed, but its result would omit part of the intended logic.
A lookup can also return #REF! when asked for a column outside its table. For example, a VLOOKUP requesting column 5 from a four-column range has no valid return reference. Microsoft’s #REF! guide documents both deleted references and invalid lookup indexes.
#N/A means the requested value is unavailable
Lookup functions commonly return #N/A when they cannot find a match. Before assuming the item is absent, compare the lookup value and key column for:
- Numbers stored as text on one side but as numbers on the other
- Leading, trailing, or nonprinting characters
- An approximate-match mode used with an unsuitable sort order
- Ranges that start or end on the wrong row
- A lookup value that genuinely does not exist
If a missing match is expected, XLOOKUP can return a deliberate message through its if_not_found argument:
=XLOOKUP(F2,A2:A100,D2:D100,"Not found")
For another lookup pattern, use IFNA after verifying the formula:
=IFNA(INDEX(D2:D100,MATCH(F2,A2:A100,0)),"Not found")
|
| IFNA lets you replace a missing lookup result with a clearer message such as "Not found" without hiding other types of Excel errors. |
Unlike a blanket error handler, IFNA replaces only #N/A. Microsoft’s #N/A guide emphasizes checking value types, spaces, ranges, and match settings before substituting a fallback.
Fix dynamic-array errors
#SPILL! means the result cannot occupy the grid
A dynamic-array formula can return several values from one cell. For example:
=SORT(UNIQUE(A2:A20))
The formula needs an empty output area below the formula cell. Select a #SPILL! cell to reveal the intended spill boundary, then check for content inside that boundary. Even an entry that looks blank may be obstructing the result.
|
| A dynamic array formula returns #SPILL! when another value blocks the spill range, even if the formula itself is correct. |
Other documented causes include merged cells in the spill area, a formula entered inside an Excel Table, an array that extends beyond the worksheet edge, an indeterminate array size, or insufficient memory. The Microsoft #SPILL! guide explains how to select obstructing cells and covers these less obvious cases.
#CALC! can identify an unsupported array result
A common example is FILTER producing no rows without an if_empty result. This formula can return #CALC! when nothing is marked Open:
=FILTER(A2:D20,D2:D20="Open")
|
| FILTER can return #CALC! when no rows match the criteria unless the optional if_empty argument is used to provide a fallback result. |
Supply the optional fallback when an empty result is a valid outcome:
=FILTER(A2:D20,D2:D20="Open","No matches")
#CALC! can also come from unsupported nested arrays, arrays of ranges, an uncalled LAMBDA, or other engine-specific calculation cases. Use Microsoft’s #CALC! reference to match the error subtype to the formula.
Do not overlook circular references
A circular reference occurs when a formula depends on itself, directly or through other cells. If D3 contains =D1+D2+D3, its result requires its own result, so Excel cannot complete an ordinary calculation.
On desktop Excel, go to Formulas > Error Checking > Circular References, select each listed cell, and correct the dependency. Use Trace Precedents or Trace Dependents when the loop spans several cells. Microsoft notes that web and mobile auditing commands may be limited in its circular-reference guidance.
Iterative calculation can support intentionally circular models, but it also allows accidental loops to produce changing or stale-looking results. Enable it only when the workbook was deliberately designed for iteration and its stopping conditions are understood.
Use IFNA and IFERROR after the formula is correct
| Function | Scope | Good use |
|---|---|---|
IFNA |
Handles #N/A only |
A lookup may legitimately have no match |
IFERROR |
Handles several common formula error values | A verified calculation needs one fallback for expected failures |
This formula replaces any handled error with a message:
=IFERROR(C2/D2,"Check inputs")
The message is friendlier, but it does not reveal whether the original problem was a zero denominator, broken reference, invalid value, or another error. Use the narrowest handler that matches the expected condition, and consider logging or visibly flagging unexpected failures instead of returning a silent blank. Microsoft’s IFERROR reference lists the error values the function evaluates.
Prevent repeat errors
- Use Excel Tables or well-designed named ranges for datasets that regularly grow or shrink.
- Separate input cells from calculation cells and label required inputs clearly.
- Use data validation to restrict entries when a formula requires a specific type or range.
- Use exact-match lookup settings unless approximate matching is deliberate and the data meets its sorting rules.
- Review dependent formulas before deleting rows, columns, worksheets, tables, or defined names.
- Test boundary cases: zero, blank, missing match, negative value, unexpected text, and an empty dynamic-array result.
- Keep error cells visible during development instead of wrapping unfinished calculations in blanket fallbacks.
Frequently asked questions
Is ##### an Excel formula error?
Usually it is a display issue: the column is too narrow. A negative date or time result can also display as hashes. Widen the column first, then inspect the number format and underlying value. Microsoft’s ##### troubleshooting page documents both causes.
Why does the error remain after I fix the visible formula?
The selected formula may depend on another cell that still contains an error. Trace its precedents and continue upstream until you find the first failing calculation or invalid input.
Can I replace every error with a blank?
You can use an error handler to return an empty string, but doing so may hide broken references, missing data, and invalid assumptions. Fix the source first, then suppress only errors that are expected and harmless to downstream calculations.
Why does a formula work in one Excel version but return #NAME? in another?
The function may not be available in the older version, or it may depend on an add-in or custom function that is not installed or enabled. Check the function’s official applicability list and the workbook’s dependencies.
Treat the error as part of the audit trail
A useful error code preserves information about what failed. Read it before changing the formula, follow the calculation upstream, and verify the repaired result with known inputs. That approach is slower than hiding the message for a few seconds and much faster than discovering later that a clean-looking worksheet was calculating the wrong thing.
Join the conversation