Menu

Excel COUNTIF 统计非空单元格

=COUNTIF(B2:B8,"<>") 统计 B2:B8 中不为空的单元格,结果与 COUNTA 相同。用 COUNTIFS 加上其他条件,并处理只是看起来为空的单元格。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=COUNTIF(B2:B8,"<>") 统计 B2:B8 中不为空的单元格。<> 表示“不等于”,后面什么都不写时,就是与空单元格比较。=COUNTA(B2:B8) 给出同样的数字。

统计已填写的单元格
F2
ABCDEF
1NameEmailPhoneCountResult
2Anaana@mail.com555-0101Emails, COUNTIF5
3Ben555-0102Emails, COUNTA5
4Caracara@mail.comMissing emails2
5Dandan@mail.com555-0104Phones4
6EvaRows7
7Finnfinn@mail.com555-0106
8Gusgus@mail.com
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

七个联系人中有五个填了邮箱,所以 F2 和 F3 都显示 5,COUNTBLANK 统计缺少邮箱的两个。已填写和空白的数量相加,始终等于 F6 中的行数。在 B3 中输入一个邮箱,F2 会加一,F4 会减一。

COUNTIF 非空与 COUNTA

对于单个区域,=COUNTIF(B2:B8,"<>") 和 =COUNTA(B2:B8) 统计的单元格相同:任何非空单元格,包括数字、日期、TRUE/FALSE 和错误值。COUNTA 更短。"<>" 这种写法是为需要第二个条件的时候准备的,因为 COUNTA 不能带条件,而 COUNTIFS 可以。

COUNT 是另一个函数:它只统计数字和日期,所以对一列姓名会返回 0。三者的对比见 COUNT 和 COUNTA。

非空的反面是 "":=COUNTIF(B2:B8,"") 统计空单元格,作用与 COUNTBLANK 相同。

COUNTIFS 非空并加上另一个条件

把 "<>" 作为 COUNTIFS 的条件之一。下面的例子中,有发货日期就表示订单已经发出。

非空加一个条件
F2
ABCDEF
1RegionOrderShippedConditionCount
2NorthA-1012026-01-08North, shipped2
3SouthA-102North, not shipped1
4NorthA-1032026-02-06Any region, shipped3
5EastA-1042026-02-20Order and date filled3
6SouthA-105
7NorthA-106
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

F2 统计有日期的两笔 North 订单,F3 统计没有日期的那一笔。F5 在两列上都使用 "<>",所以统计的是两列都已填写的行。同样的条件也适用于 SUMIFS 和 AVERAGEIFS:=SUMIFS(D2:D7,C2:C7,"<>") 只会对已发货的行累加金额列 D。

只是看起来为空的单元格

含有一个空格的单元格看起来是空的,但其实包含文本,"<>" 和 COUNTA 都会统计它。从其他系统粘贴来的数据,或者用输入空格来“清空”的单元格,经常会这样。去掉空格后检查长度,就能统计有可见内容的单元格。

空格不等于空
E2
ABCDE
1NameNoteCountResult
2Anacall backCOUNTA4
3Ben Visible content2
4CaraSpace in B3?1
5Danpaid
6Eva
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

B3 中有一个空格,B6 中有两个。COUNTA 把它们和两条真正的备注一起统计,显示 4。SUMPRODUCT 版本先对每个单元格去除空格,只统计还剩下内容的:2。要清理这些单元格本身,选中它们并按 Delete,或在辅助列中使用 TRIM。如果在“查找和替换”中把所有空格都替换为空,“call back”也会变成“callback”。

返回空字符串的公式

像 =IF(C2>0,C2,"") 这样的公式在条件不成立时什么也不显示,但单元格并不为空:它包含一个结果为空字符串的公式。不同的计数函数对它的处理不同。假设 A2:A6 中依次是 Apple、一个返回 "" 的公式、一个空单元格、5 和 Pear,Excel 给出:

=COUNTA(A2:A6)                   4   counts the "" formula
=COUNTIF(A2:A6,"<>")             4   counts the "" formula
=COUNTBLANK(A2:A6)               2   counts the "" formula as blank
=COUNTIF(A2:A6,"")               2   counts the "" formula as blank
=SUMPRODUCT(--(LEN(A2:A6)>0))    3   counts only visible content
=COUNTIF(A2:A6,"?*")             2   counts text of at least one character

所以这个公式所在的单元格既被算作空白,又被算作非空,COUNTA 加 COUNTBLANK 会大于单元格总数。当一列中填满了这样的公式时,用 =SUMPRODUCT(--(LEN(A2:A6)>0)) 统计,它只统计显示了内容的单元格。再加一个条件:=SUMPRODUCT((B2:B6="North")*(LEN(A2:A6)>0))。

练习:非空加一个条件

轮到你了:有电话的 Paris 联系人
F2
ABCDEF
1NameCityPhoneCountResult
2AnaParis555-0101Paris with phone
3BenLyon555-0102
4CaraParis
5DanParis555-0104
6EvaLyon
7FinnNice555-0106
8GusParis
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 统计 Paris 中在 C 列填有电话号码的联系人。在 F2 中写公式。

该用哪个公式

你想统计公式
一个区域中已填写的单元格=COUNTA(B2:B8)
已填写的单元格,再加一个条件=COUNTIFS(A2:A8,"North",B2:B8,"<>")
两列都已填写的行=COUNTIFS(B2:B8,"<>",C2:C8,"<>")
有可见内容的单元格,跳过空格和 "" 公式=SUMPRODUCT(--(LEN(TRIM(B2:B8))>0))
仅已填写的文本单元格=COUNTIF(B2:B8,"?*")
空单元格=COUNTBLANK(B2:B8)

如果要检查单个单元格而不是计数,=B2<>"" 在 B2 显示了内容时返回 TRUE,=ISBLANK(B2) 只有在 B2 真正为空、不含任何公式时才返回 TRUE。

常见问题

COUNTIF "<>" 和 COUNTA 一样吗?

对于单个区域,是的:=COUNTIF(B2:B8,"<>") 和 =COUNTA(B2:B8) 统计的单元格相同(文本、数字、日期、TRUE/FALSE 和错误值)。"<>" 这种写法是为 COUNTIFS 准备的,在那里它可以和其他条件放在一起。

COUNTIF 中的 "<>" 是什么意思?

<> 表示“不等于”,后面什么都不写时,就是与空单元格比较。所以 "<>" 表示“非空”,"<>North" 表示“不等于 North”。

如何统计既不为空也不为零的单元格?

使用 =COUNTIFS(B2:B8,"<>",B2:B8,"<>0")。单独使用条件 "<>0" 也会统计空单元格,因为空单元格不等于 0;加上 "<>" 就能把它们排除。

为什么 COUNTA 会统计看起来为空的单元格?

它们其实不是空的:里面有一个空格,或者有一个返回空字符串 "" 的公式。如果只想统计有可见内容的单元格,使用 =SUMPRODUCT(--(LEN(TRIM(B2:B8))>0))。

Coddy 编程语言插图

和 Coddy 一起学编程

开始