The #SPILL! error occurs when modern Excel treats your VLOOKUP as a dynamic array but lacks the blank space to output the results. To fix it immediately, delete any data blocking the downward cells, or prepend your lookup value with the implicit intersection operator (@):
Excel
=VLOOKUP(@A:A, E:F, 2, FALSE)
The Syntax Breakdown
@(Implicit Intersection Operator): This is the critical fix. Introduced in newer Excel versions, it forces a dynamic array formula to return a single value based on the formula’s row. It reverts modern Excel to traditional, pre-2018 calculation behavior.A:A: Thelookup_value. Selecting an entire column triggers a dynamic array. Excel attempts to calculate the VLOOKUP for every single row in column A and “spill” the results downward.E:F: Thetable_arraywhere your reference data resides.2: Thecol_index_numindicating which column to return from your array.FALSE: Forces an exact match.
Real-World Example: Reconciling Vendor Invoice IDs
You are an Operations Manager matching a daily log of Invoice IDs against a master vendor database. You wrote your VLOOKUP to reference the entire column A:A so you wouldn’t have to drag the formula down manually.
Here is your raw data structure:
| Row | A (Invoice ID) | B (Vendor Name Formula) | C (Master List IDs) | D (Master List Vendors) |
| 2 | INV-100 | =VLOOKUP(A:A, C:D, 2, FALSE) | INV-100 | TechCorp |
| 3 | INV-101 | Old data you forgot to delete | INV-101 | AlphaLogix |
| 4 | INV-102 | INV-102 | InnoSystems |
The Application:
Because you used A:A as the lookup value in B2, Excel tries to calculate the vendor for INV-100, INV-101, and INV-102 simultaneously, attempting to spill the answers into B2, B3, and B4. Because cell B3 contains text (“Old data you forgot to delete”), the spill is blocked, and cell B2 returns #SPILL!.
The Output (After Fix):
You have two options to fix this:
- Delete the text in
B3, allowing the array to spill naturally. - Change the formula in
B2to=VLOOKUP(@A:A, C:D, 2, FALSE)or=VLOOKUP(A2, C:D, 2, FALSE). This stops the spill entirely and calculates only for Row 2.
| Row | A (Invoice ID) | B (Vendor Name Formula) |
| 2 | INV-100 | =VLOOKUP(@A:A, C:D, 2, FALSE) Outputs: TechCorp |
| 3 | INV-101 | Old data you forgot to delete |
Common Errors & How to Fix Them
- The error persists even after deleting the visible text in the spill range: Excel is detecting invisible spaces, apostrophes, or hidden formatting in the adjacent cells. Fix: Highlight the empty cells below your formula, go to Home > Clear (the eraser icon) > Clear All.
#SPILL!changes to#VALUE!after adding the@symbol: You placed the implicit intersection operator in the wrong argument of the formula (e.g.,@C:D). Fix: Ensure the@symbol is only placed in front of thelookup_valueargument (e.g.,@A:A).- The formula works but returns
#N/A: The spill issue is resolved, but the specific lookup value does not exist in your master table. Fix: Wrap your functional formula in an error handler to clean up missing data:=IFERROR(VLOOKUP(@A:A, C:D, 2, FALSE), "Not Found").