ExcelReady
CourseMock testsFunction guidesBlog
Start freeStart learning for free
ExcelReady

Be Excel-ready before day one. Hands-on practice in your browser, with instant feedback.

Learn

  • Course
  • Mock tests
  • Function guides
  • Blog

Test prep

  • Excel level test
  • Excel test practice
  • Free screening quiz
  • Certificate

Company

  • Editorial policy
  • Contact
  • Terms
  • Privacy

© 2026 ExcelReady. All rights reserved.

  1. Blog
  2. Errors & fixes
  3. #CALC! Error in Excel: What It Means and How to Fix It

#CALC! Error in Excel: What It Means and How to Fix It

By ExcelReady Team·Updated November 1, 2026·6 min read

The short answer

#CALC! means Excel couldn't finish an array calculation. The most common cause is FILTER finding no matching rows, which returns an empty array. Fix it with FILTER's third argument, for example =FILTER(A2:C7,B2:B7="North","No orders"). Other causes are formulas that try to return an array inside each cell, and a LAMBDA that is never called.

Key takeaways

  • #CALC! only appears in Excel versions with dynamic arrays: Microsoft 365, Excel 2021 and later.
  • An empty FILTER result is the number one cause; add a third argument such as "No results" to fix it.
  • Wrap totals as =SUM(FILTER(range,condition,0)) so an empty result gives 0 instead of #CALC!.
  • Formulas that return several values for each row, like BYROW with TEXTSPLIT, cause a nested array #CALC!.
  • A LAMBDA typed in a cell without values to work on also returns #CALC!.
On this page+
  1. What does #CALC! mean in Excel?
  2. Cause 1: FILTER finds no matching rows
  3. How to fix #CALC! with FILTER's if_empty argument
  4. How to stop #CALC! inside SUM, COUNT and other formulas
  5. Cause 2: a nested array (an array inside each cell)
  6. Cause 3: a LAMBDA that is never called
  7. How to check for #CALC! before it appears
  8. Practise it

The #CALC! error in Excel means a formula asked for an array result that Excel couldn't calculate. Nine times out of ten, the formula is FILTER and nothing matched, so the result is empty. This guide explains what this calc error means in Excel, shows the one-argument fix for FILTER, and covers the less common causes.

What does #CALC! mean in Excel?#

#CALC! is a calculation error for array formulas. An array formula returns a list of values instead of one value, and in Microsoft 365 and Excel 2021 those values spill into the cells below and to the right.

Excel shows #CALC! when it can't produce that list. It came with dynamic arrays, so you only see it in Microsoft 365, Excel 2021 and later. It is different from #SPILL!, which means the result exists but has no room to spill. The article on fixing the #SPILL! error covers that one.

There are three main causes:

CauseTypical formulaFix
Empty resultFILTER with no matching rowsAdd the if_empty argument
Nested arrayBYROW or MAP returning several values per rowReturn one value per row
Uncalled LAMBDA=LAMBDA(x,x*2) on its ownPass a value, or save it as a name

The examples use this order list in A1:C7:

ABC
1OrderRegionAmount
21001East250
31002West400
41003East175
51004South320
61005West90
71006East510

Cause 1: FILTER finds no matching rows#

When no row meets FILTER's condition, the result is an empty array, and Excel can't put "nothing" in a cell. So it shows #CALC!. This formula works, because three orders are East:

Excel formula
=FILTER(A2:C7,B2:B7="East")

It spills orders 1001, 1003 and 1006 with their regions and amounts. Change the region to one that isn't in the data, and the error appears:

Excel formula
=FILTER(A2:C7,B2:B7="North")

There are no North orders, so the result is #CALC!. The formula isn't wrong. It just has nothing to show. This often happens when the condition comes from a drop-down cell and someone picks a value with no data yet.

How to fix #CALC! with FILTER's if_empty argument#

FILTER has a third, optional argument called if_empty. Whatever you put there is shown when nothing matches:

Excel formula
=FILTER(A2:C7,B2:B7="North","No orders")

Now the cell shows No orders instead of the error. You can use any text, "" for a blank-looking cell, or a number such as 0.

The syntax is =FILTER(array, include, [if_empty]). The FILTER function guide explains each argument, and the article on the FILTER function with several conditions shows how to combine criteria with * and +.

You could wrap the formula in IFERROR instead, but that hides every error, not just the empty case. If your ranges are different sizes, FILTER returns #VALUE!, and IFERROR would hide that real mistake too. The if_empty argument only covers "nothing found", so it's the safer choice.

How to stop #CALC! inside SUM, COUNT and other formulas#

When FILTER sits inside another function, the #CALC! passes through to the outer formula. For example, to total the West orders:

Excel formula
=SUM(FILTER(C2:C7,B2:B7="West"))

The result is 490 (400 + 90). But for North, SUM receives #CALC! and returns #CALC! too. Give FILTER a 0 as its if_empty value and the total becomes 0:

Excel formula
=SUM(FILTER(C2:C7,B2:B7="North",0))

Watch out when counting. =ROWS(FILTER(A2:A7,B2:B7="North","")) returns 1, not 0, because the if_empty text is one cell. For counts, =COUNTIFS(B2:B7,"North") is simpler and correct. In the same way, for a single total, SUMIFS often does the job without FILTER at all.

SORT, UNIQUE and other array functions wrapped around an empty FILTER also return #CALC!. Put the if_empty argument on the inner FILTER and the whole chain works.

Cause 2: a nested array (an array inside each cell)#

Excel can return a list of values, but it can't put a list inside each cell of another list. That's called a nested array, and it gives #CALC!.

This happens with functions that work row by row, such as BYROW and MAP. Say A2:A4 hold text like "red,blue". This formula asks for a split list for every row:

Excel formula
=BYROW(A2:A4,LAMBDA(r,TEXTSPLIT(r,",")))

Each row would need several cells, so Excel returns #CALC!. Fix it by making the inner calculation return one value per row, such as a count or a joined string, or by splitting all the text in one step instead of row by row.

Cause 3: a LAMBDA that is never called#

A LAMBDA is a custom function you write with a formula. Typed into a cell on its own, it has no values to work on, so Excel shows #CALC!:

Excel formula
=LAMBDA(x,x*2)

Add the values in brackets straight after it to test it: =LAMBDA(x,x*2)(5) returns 10. To reuse it, save it as a name in Formulas > Name Manager and call it like a normal function. LAMBDA, BYROW and MAP need Microsoft 365 or Excel 2024.

How to check for #CALC! before it appears#

A few habits stop #CALC! from surprising you, or anyone else who opens the file:

  • Always give FILTER an if_empty value in reports, dashboards and drop-down driven sheets.
  • Test with a value that has no data. Type a region or name that doesn't exist and check the result looks sensible.
  • Know the other errors. #CALC! is about empty or impossible arrays. A #DIV/0! after FILTER usually means you divided by a count of zero; see how to fix #DIV/0!.
  • Learn how spilling works. The guide to dynamic arrays in Excel explains spill ranges, and returning several lookup results at once shows FILTER as a lookup.

Practise it#

Practise the FILTER function in a live spreadsheet: you'll filter rows by one and two conditions and add an if_empty message, and each formula is checked as soon as you press Enter. Start with the North orders exercise on this page.

Try it yourself

This is a live spreadsheet. Type the formula in the green cell and press Enter.

There are no North orders, so a plain FILTER returns #CALC!. Click E2 and filter the order numbers in A2:A7 where B2:B7 is "North", with "None found" as the third argument. Press Enter.

fx
ABCDEF
1
Order
Region
Amount
North orders
2
1001
East
250
3
1002
West
400
4
1003
East
175
5
1004
South
320
6
1005
West
90
7
1006
East
510
8
9
10

Tip: FILTER takes three parts: what to return, the condition, and what to show if nothing matches.

Practise this in a lesson

LessonFILTER: pull matching rows with a formulaReturn every row that meets one or more conditions with FILTER, and show a friendly message when nothing matches.Function guideFILTERReturn every row that matches a condition with Excel's FILTER. Multiple criteria, empty results and #SPILL! explained, with live practice.

Frequently asked questions

What does #CALC! mean in Excel?

+

It means Excel ran into a problem it can't calculate in an array formula. Most often, a FILTER formula found no matching rows, so there was nothing to return.

How do I get rid of #CALC! in FILTER?

+

Add the third argument, if_empty, to say what to show when nothing matches. For example, =FILTER(A2:C7,B2:B7="North","No orders") shows No orders instead of the error.

Should I use IFERROR to hide #CALC!?

+

It works, but it also hides real mistakes such as a #VALUE! from ranges of different sizes. FILTER's own if_empty argument only catches the empty case, so it is the safer fix.

Why don't I see #CALC! in older Excel?

+

#CALC! came with dynamic arrays in Microsoft 365 and Excel 2021. Older versions don't have FILTER at all, so a FILTER formula shows #NAME? there instead.

Sources

  • FILTER function - Microsoft Support
  • Dynamic array formulas and spilled array behavior - Microsoft Support

Written and checked by the ExcelReady Team. First published November 1, 2026. The practice exercise runs in the same formula engine as our lessons. Found a mistake? Read our editorial policy or email hello@excelready.app.

On this page

  1. What does #CALC! mean in Excel?
  2. Cause 1: FILTER finds no matching rows
  3. How to fix #CALC! with FILTER's if_empty argument
  4. How to stop #CALC! inside SUM, COUNT and other formulas
  5. Cause 2: a nested array (an array inside each cell)
  6. Cause 3: a LAMBDA that is never called
  7. How to check for #CALC! before it appears
  8. Practise it

Keep reading

Dynamic arrays· 5 min read

#SPILL! Error in Excel: What It Means and How to Fix It

#SPILL! means a formula that returns several results can't place them, usually because a cell in the way isn't empty. Click the formula, then the warning icon, to see the reason. Clear or move whatever blocks the spill range, unmerge merged cells, move the formula out of an Excel table, or use a smaller range instead of a whole column.

Errors & fixes· 6 min read

#DIV/0! Error in Excel and How to Avoid It

#DIV/0! means a formula tried to divide by zero or by an empty cell. Fix it by checking the divisor first: =IF(B2=0,"",A2/B2) shows a blank until B2 has a number. =IFERROR(A2/B2,"") is shorter but hides every other error too. AVERAGE and AVERAGEIF also return #DIV/0! when there are no numbers to average.

Dynamic arrays· 6 min read

Dynamic Arrays in Excel Explained Simply

Dynamic arrays let one Excel formula return several values that spill into the cells below or beside it. Type =UNIQUE(B2:B9) in one cell and the whole list appears, then resizes when the data changes. They need Excel 2021, Excel 2024, Microsoft 365 or Excel for the web. Refer to a whole spill with a # after its first cell, such as E2#.

Don't just read about Excel. Do it.

Practise real formulas in a live spreadsheet with instant feedback, right in your browser. Nothing to download.

Start learning for free