Excel #SPILL! error: the spill range isn't blank
Hi, it's BlueByte. If a formula like =UNIQUE(...) or =SORT(...) shows #SPILL! instead of results, the formula is correct — it just has nowhere to put its output. Let's read the exact reason Excel gives, find what is blocking the range, and clear it. The formula fills in on its own the moment the space is free.
Read the reason under the error first
Select the formula cell and look under the yellow warning icon. Excel names the exact blocker — most often "Spill range isn't blank", but sometimes "Spill range has merged cell", "Spill range in table", "Spill range too big", or "Spill range is unknown". That reason decides the fix, so read it before doing anything.
Why the formula can't place its result
A dynamic array formula returns more than one value and needs to spill into the cells below and to the right of where you typed it. If anything blocks that range, Excel refuses rather than overwrite your data. In order of how often it happens:
- The range is not empty — a value, a space, or a number formatted to look blank sits in a cell the result would fill.
- A merged cell falls inside the spill range.
- The formula is inside an Excel Table — tables do not support spilling at all.
- The result would run past the sheet's edge, or its size is not knowable because a volatile function is nested inside.
Clear what's in the way
For the common "isn't blank" case, let Excel take you to the blocker:
Warning icon → Select Obstructing Cells → Delete the highlighted cellsExcel jumps straight to the cell or cells in the way; delete or move them and the formula spills. For the other reasons: unmerge the spill range (Home → Merge & Center → Unmerge Cells), or move the formula out of the Table (cut it to a normal cell, or Table Design → Convert to Range).
A real case: a leftover total
You enter =SORT(UNIQUE(A2:A500)) in C2 and get #SPILL!. Selecting C2 shows a dashed border running down column C, and the reason reads "Spill range isn't blank". You click the warning icon, choose Select Obstructing Cells, and Excel highlights C40 — a total someone typed months ago. You delete C40, and the sorted unique list fills C2 downward with a thin blue border, confirming a clean spill. You did not re-enter the formula; clearing the range was enough.
Confirm it spilled cleanly
Select the top cell of the result. A thin blue border around the whole range means it spilled. If it still shows #SPILL!, read the reason again — you may have cleared one blocker while another remains.
Keep it from happening again
Leave empty space below and to the right of dynamic array formulas, and keep them out of Tables. When a blocking cell looks empty but still blocks, it almost always holds a space or a non-printing character — select it and press Delete to be sure.
How this differs from #REF! and #VALUE!
#SPILL! is only about room to spill — the formula works, it just cannot place its output. That is different from #REF! (an invalid cell reference, usually a deleted cell) or #VALUE! (a wrong argument type), which mean the formula itself is wrong. So when you see #SPILL!, look at the cells around the result, not at the formula.
Related questions
The blocking cell looks empty. Why is it still blocking?
It almost certainly contains a space or a non-printing character, or a number formatted as blank. Use Select Obstructing Cells, then press Delete on that cell.
Can I make the formula overwrite what is in the way?
No. Spilling never overwrites existing data by design — that is the safeguard. You have to clear the range yourself.
Why does the same formula work outside my table but not inside it?
Excel Tables do not support spilling. Move the dynamic array formula outside the Table, or convert the Table to a normal range.
The reason says 'Spill range is unknown'. What now?
The result size cannot be determined ahead of time, often because a volatile function is nested inside. Rework the formula so its output size is fixed, or wrap the volatile part differently.
I get #SPILL! only when I open the file, then it clears.
That is calculation order on load — a downstream formula briefly blocks the range until everything recalculates. Force a full recalc with Ctrl+Alt+F9; if it persists, an actual obstruction remains.
References
Haneul Seo
Infrastructure engineer · 10+ years running Linux fleets
More in this category
Gmail rejects your mail with 550-5.7.26: unauthenticated email is not accepted due to the domain's DMARC policy
Gmail enforced the DMARC policy your own domain publishes: the message failed both SPF and DKIM alignment against the header From: domain, so a p=quarantine or p=reject policy turned it into a hard bounce. The Authentication-Results header names the failing check, and three dig queries against your SPF, DMARC and DKIM records name the cause. A near-identical bounce about authenticating with SPF or DKIM is a different problem — Gmail's baseline sender requirements, not your policy.
Microsoft Entra ID: AADSTS50011, the redirect URI specified in the request does not match the redirect URIs configured for the application
Sign-in completes and then Entra ID refuses the last hop, because the redirect_uri your app sent is not a byte-for-byte match for any URI registered on the app. The match is case-sensitive, counts the trailing slash, requires https outside localhost, and treats the port as significant everywhere except localhost. It also splits by platform: web, spa and publicClient are three separate lists, and URIs added to the service principal instead of the application object can disappear. Read the URI and the app ID out of the error, compare them with az ad app show, add the exact string with az ad app update or a Graph PATCH, then wait three to five minutes.
Exchange Online: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled
A scanner, script or app that sends through smtp.office365.com gets 535 5.7.139 because the SMTP AUTH protocol is switched off for the tenant, for that mailbox, or by an authentication policy or security defaults that block Basic authentication. Read the wording (Tenant, Mailbox, or 'did not meet the criteria'), confirm with Get-TransportConfig, Get-CASMailbox and Get-AuthenticationPolicy, then open SMTP AUTH on the one mailbox that needs it rather than tenant-wide. Treat Basic SMTP AUTH as a bridge: Microsoft disables it by default for existing tenants at the end of December 2026, so move the sender to OAuth, High Volume Email or a relay connector.
Zoom: "Unable to connect" error code 5003 — the desktop app can't reach Zoom while the browser can
Error 5003 is the Zoom desktop app failing to complete its connection to Zoom's servers while the web client on the same machine joins fine. The app needs more than a browser does: Zoom's firewall article lists TCP 443/8801/8802 and UDP 3478/3479/8801–8810 for meetings, a set of CA hosts for certificate validation, and it asks that zoom.us and *.zoom.us be exempted from proxy or SSL inspection. A port test, a curl issuer check, and the app's built-in Network Connectivity Tool (Ctrl+Alt+Shift+D / Cmd+Option+Shift+D) show which of those is cut; fix that layer, and reinstall only when a single machine fails while its neighbours join.
Slack: "Slack cannot connect" and the grey "Last updated…" banner behind a corporate proxy
Slack loads channels over ordinary HTTPS but delivers new messages over a persistent WebSocket on port 443 to the three wss-*.slack.com hosts Slack names (primary, backup, mobile). When a proxy or firewall passes the HTTP side and blocks the upgrade — most often because SSL decryption is on for the wss hosts, or the allowlist stops at slack.com — the app shows the grey "Last updated…" banner or "Slack cannot connect." while the browser seems fine. Two curl probes from the affected machine show which layer is blocked; exempt the three wss hosts from decryption, allow every domain on my.slack.com/help/urls, and confirm with my.slack.com/help/test.
Word: "The document is locked for editing by another user"
Word found a lock — an owner file — for the document and assumed someone else has it open, so it offers only a read-only copy. Usually no one does: a crash left the lock behind, or a hidden Word process is still holding the file. Confirm which, close every Word instance, delete the stale ~$ owner file, and the document opens for editing again.