Why does AVERAGE(A1:A10) return 42 when three cells look empty? Why does it change when you type a space in one of them? Why does =AVERAGE(B2:B15) give #DIV/0! even though you ‘see’ numbers?
The answer isn’t about formulas — it’s about how Excel defines ‘blank’ at the engine level. And no, Ctrl+G > Blanks won’t catch them all.
The Myth
Most people assume ‘blank cell = ignored by AVERAGE’. That’s half true — and dangerously incomplete. They’ll select A1:A8, see two visibly empty rows, and trust that AVERAGE only counts the six numeric entries. In reality, Excel treats four distinct kinds of ‘emptiness’ — and only one of them is truly invisible to AVERAGE.
This misconception leads to silent errors in financial summaries, KPI dashboards, and HR headcount reports — especially when data comes from Power Query, web imports, or copy-pasted CRM exports.
The Reality
AVERAGE() ignores cells that are truly blank (no formula, no value, no space, no non-breaking character). But it includes cells containing:
- An empty string (="") returned by an IF formula
- A single space (" ") typed manually
- Non-breaking spaces (CHAR(160)) — common in web-scraped data
- Zero-length text from TRIM() or CLEAN() mishaps
Here’s what happens across 9 realistic test cases — all in column A (A1:A9):
| Cell | Content | Appears Blank? | Included in AVERAGE(A1:A9)? |
|---|---|---|---|
| A1 | [empty] | Yes | No |
| A2 | ="" | Yes | Yes |
| A3 | " " (space) | Yes | Yes |
| A4 | CHAR(160) | Yes | Yes |
| A5 | 0 | No | Yes |
| A6 | =IF(FALSE,10,"") | Yes | Yes |
| A7 | =NA() | No (shows #N/A) | No |
| A8 | "$45,200" (text) | No (shows as text) | No |
| A9 | 27.5 | No | Yes |
The beauty of this approach is how predictable it becomes once you know the rules: AVERAGE sees numbers and zero-length strings as valid inputs — but refuses to touch errors or pure emptiness.
Why the Myth Persists
Early Excel training (and many YouTube videos from 2012–2016) used clean, hand-entered data. No formulas. No imports. No invisible characters. So instructors said “AVERAGE skips blanks” — and it worked. That phrase stuck, even after Excel added more sophisticated text-handling and web-data ingestion.
Also, Excel’s Go To Special > Blanks (Alt + ; then Alt + H + F + G + K) selects only truly blank cells — not those with ="" or spaces. So users run that shortcut, see 2 cells selected, and assume AVERAGE behaves the same. It doesn’t.
The Right Way
Stop guessing. Start validating.
First, expose hidden content with this quick check in column B (next to your data in A1:A12):=LEN(TRIM(CLEAN(A1)))
If the result is >0, AVERAGE sees it as non-blank — even if it looks empty.
Then apply the correct averaging method based on intent:
- To ignore all non-numeric cells (including ="", spaces, text): use
=AVERAGEIF(A1:A12,"<>"&"")— but this still includes zeros. - To exclude zeros and blanks:
=AVERAGEIFS(A1:A12,A1:A12,"<>0",A1:A12,"<>") - To be 100% safe with imported data: wrap in
VALUE()and handle errors:=AVERAGE(IF(ISNUMBER(VALUE(A1:A12)),VALUE(A1:A12)))— enter with Ctrl+Shift+Enter in older Excel, or just Enter in Microsoft 365.
Try it with this real dataset (B2:B11):
| Name | Q1 Sales | Q2 Sales |
|---|---|---|
| Sarah Chen | $24,800 | $31,200 |
| Miguel Torres | $19,500 | "" |
| Anya Petrova | " " | $28,400 |
| James Lee | $33,100 | $0 |
| Fatima Al-Mansoori | CHAR(160) | $26,900 |
| Diego Morales | $22,300 | #N/A |
| Liu Wei | $29,700 | $30,100 |
| Priya Patel | "$42,500" | $25,600 |
| Tariq Hassan | $0 | $27,800 |
| Nina Dubois | [blank] | $34,200 |
Now compute AVERAGE(B2:B11) — you’ll get #DIV/0! because of the #N/A. But AVERAGE(B2:C11) returns $27,166.67. Why? Because it silently excludes the #N/A in C6, but includes the empty string in B3, the space in B4, and CHAR(160) in B5 — all treated as 0 in arithmetic context.
Proof It Works
Here’s the exact same range before and after cleaning with =IF(OR(LEN(TRIM(CLEAN(B2)))=0,ISERROR(VALUE(B2))),"",VALUE(B2)) applied to B2:C11:
| Metric | Raw AVERAGE(B2:C11) | Cleaned AVERAGE |
|---|---|---|
| Result | $27,166.67 | $29,428.57 |
| Count of values used | 14 | 12 |
| Includes false zeros? | Yes (B3, B4, B5 = 0) | No |
| Handles #N/A? | Skipped automatically | Converted to blank |
That $2,261.90 difference? Not rounding. It’s the cost of invisible data.
Exceptions
There are cases where ‘AVERAGE includes blank cells’ is technically correct — but only because of user-defined meaning:
- You’ve formatted cells to hide zeros (via Format Cells > Number > Custom >
0.00;-0.00;;@). The cell contains 0, looks blank, and AVERAGE includes it. - You’re using AVERAGEA(), which treats text and logicals as values (TRUE=1, FALSE=0, text=0). So =AVERAGEA("","x",5) returns 2, not 5.
- Your ‘blank’ is actually a formula returning =NA() — and you’re using AGGREGATE(1,6,range), which skips errors and hidden rows, but still sees ="" as 0.
One counterintuitive tip: If you want to force AVERAGE to treat ="" as blank, don’t wrap it — delete the formula and replace with a proper IF that returns nothing: =IF(condition,value,) — leaving the third argument empty. Excel stores that as truly blank.
Next step: Run this diagnostic on your next report. In cell D1, paste:=SUMPRODUCT(--(LEN(TRIM(CLEAN(A1:A100)))>0))/COUNTA(A1:A100)
It tells you what % of your ‘blank-looking’ cells actually contain hidden junk. Anything over 5% means it’s time to clean before averaging.