The formula worked in the old sheet. You paste it into your shiny Microsoft 365 workbook, and up pops #SPILL!, or a stray @ shows up in a formula you never touched. Dynamic arrays made Excel more powerful and, for a moment, more confusing.
Most Excel dynamic array errors come from a handful of predictable clashes between the new spilling behavior and habits built for the old grid. A cell in the way, a merged range, a whole-column reference, or a formula trapped in a Table, and the spill refuses. Here are nine mistakes that break dynamic-array formulas, each with a reproducible cause and the fix, so you can clear the error instead of rewriting the sheet.
Quick Take
- #SPILL! almost always means something is blocking the output range: a value, a merged cell, or a Table.
- A stray @ (implicit intersection) quietly forces a formula to return one value instead of spilling.
- Reference a spill with the # operator, and keep dynamic-array formulas out of Excel Tables.
Table of Contents
How We Chose These
We focused on the mistakes that break a formula outright or silently change its result when an old template meets modern Excel, rather than rare edge cases. Each one has a clear cause you can reproduce and a fix you can apply in the cell. They run from the most common blocker, something sitting in the spill range, to the version mismatches that only appear when you share the file, so you can work down them in order.
1. A Hidden @ Operator Stops the Spill
When you open an old formula or reference a Table in Microsoft 365, Excel may insert an @ symbol, the implicit intersection operator, as in =@FILTER(…). That @ forces the formula to return a single value instead of spilling the full result, which is rarely what you want from a dynamic-array function. Delete the @ where you want the whole array, and the spill returns. Microsoft explains the @ operator in detail.
2. Something Is Blocking the Spill Range
The #SPILL! error usually means the cells your formula wants to fill are not all empty. Any content in the way, a number, text, another formula, even a stray space, stops the spill. Excel outlines the intended spill range with a dashed border; click the warning menu, choose Select Obstructing Cells, and clear whatever is sitting there. Once the output range is empty, the array spills as intended.
3. Merged Cells in the Output Path
A merged cell anywhere in the range a formula needs to fill will trigger #SPILL!, because a spilled array cannot write into merged cells. This one is easy to miss when a template uses merged headers. Unmerge every cell in the area below and beside your formula, then let it spill. If you need the visual of merged headers, use Center Across Selection instead, which does not block the array.
4. Whole-Column References That Try to Spill Forever
A formula like =A:A*2 or a FILTER that reads an entire column asks Excel to return over a million rows, which errors or bloats the sheet. Dynamic arrays size themselves to their input, so an unbounded input produces an unbounded output. Point the formula at a defined range or, better, a Table column that grows with your data, so the spill stays the size you actually need.
5. A Spilling Formula Trapped in a Table
Excel Tables and dynamic arrays do not mix: a formula that spills will not do so inside a Table, and you get #SPILL! or a forced @ that collapses it to one value. Tables expect one value per cell in a column, which is the opposite of spilling. Keep dynamic-array formulas such as FILTER, UNIQUE, and SORT outside any Table, referencing the Table as their input rather than living inside it.
6. Forgetting the Spill Range Operator (#)
When you reference a spilled result by its top cell, such as =SUM(D2), the reference does not grow when the spill changes size, so your totals silently go wrong. Add the spill range operator: =SUM(D2#) tells Excel to use the entire spilled array, however large it becomes. Get into the habit of the trailing # whenever you point at a spill, and downstream formulas stay correct as the data grows.
7. #CALC! From an Empty FILTER
A FILTER that finds no matching rows returns #CALC!, because an empty array is not something Excel can place in the cell. It looks like a broken formula, but it is just an empty result. Add the third argument that FILTER provides for exactly this case, for example =FILTER(range, criteria, “None”), so an empty match shows your chosen text instead of an error. The same argument works whenever a filter might legitimately return nothing.
8. Two Spills That Collide
When two dynamic-array formulas sit close enough that their outputs would overlap, they block each other and both can show #SPILL!. Each spill needs clear room to write into. Leave enough empty space below and to the right of each dynamic-array formula, or restructure the layout so no two spills compete for the same cells. Planning the sheet around where arrays will grow avoids the collision entirely.
9. Old Array Formulas and Version Mismatch
Legacy Ctrl+Shift+Enter array formulas behave differently from dynamic arrays, and pasting one into modern Excel, or the reverse, can break it. Worse, a workbook built on FILTER, UNIQUE, or SEQUENCE opened in Excel 2019 or an older non-365 version shows _xlfn prefixes and fails, because those functions do not exist there. Convert old CSE formulas to native dynamic-array functions, and check which Excel version your recipients run before you share.
The Takeaways
- #SPILL! means the output range is blocked; clear obstructing cells, unmerge, and keep formulas out of Tables.
- Delete a stray @ to restore a spill, and reference spills with the # operator so totals track the array.
- Bound your inputs instead of whole columns, and give each spill room so two do not collide.
- Add FILTER’s if-empty argument to avoid #CALC!, and confirm the recipient’s Excel version before sharing.
Frequently Asked Questions
What causes the #SPILL! error in Excel?
A #SPILL! error means a dynamic-array formula cannot fill its output range because something is blocking it. The usual culprits are a value or formula already sitting in the spill range, a merged cell in the path, or the formula being inside an Excel Table. Clear or unmerge the blocking cells, or move the formula out of the Table, and the spill completes.
Why does Excel add an @ symbol to my formula?
The @ is the implicit intersection operator, and Excel adds it when an older formula or a Table reference would return a single value in modern dynamic-array Excel. It forces the formula to one value instead of spilling. If you want the full array, delete the @ from the formula. If you genuinely want one value, leaving it is correct.
How do I reference a whole spilled range in another formula?
Use the spill range operator, which is a # after the top-left cell of the spill. If a formula spills starting in D2, then D2# refers to the entire spilled array, and =SUM(D2#) totals all of it. Because the reference resizes with the spill, your downstream formulas stay correct even as the array grows or shrinks.
What is the difference between #SPILL! and #CALC! errors?
A #SPILL! error means the formula would work but cannot write its results because the output range is blocked. A #CALC! error means the array itself is a problem, most often an empty result from FILTER or a nested array Excel cannot compute. Fix #SPILL! by clearing the range, and fix #CALC! by handling the empty case, such as FILTER’s if-empty argument.
Do dynamic array formulas work in older versions of Excel?
No. Functions like FILTER, UNIQUE, SORT, and SEQUENCE exist only in Microsoft 365 and Excel 2021 and later. Open a workbook that uses them in Excel 2019 or earlier and the formulas show a _xlfn prefix and return errors. Before sharing a dynamic-array workbook, check the recipient’s Excel version, and provide a static copy if they are on an older release.
Let Your Formulas Spill in Peace
Dynamic arrays reward a small shift in habits. Keep the spill range clear, unmerge cells, and stay out of Tables, and most #SPILL! errors never appear. Delete stray @ operators, reference spills with #, bound your inputs, and handle empty filters, and the deeper errors fall away too. Work down the list when a formula breaks, and you will fix the cause rather than fight the symptom. For more everyday tech fixes, browse Wayodd’s Computing section.


No Comments
Leave a comment Cancel