
概括
要统计等于某个值或另一个值的单元格数量,可以使用基于 COUNTIF 函数的公式。在所示示例中,H6 单元格中的公式为:
=SUM(COUNTIF(color,{"red","blue"}))
其中color指的是指定区域D5:D15。结果为 7,因为在区域 D5:D16 中,“红色”出现了 4 次,“蓝色”出现了 3 次。请参阅下文了解解释以及其他解决方法。
注意:本例中使用 COUNTIF 函数是因为它能满足我们的需求,但COUNTIFS 函数也能达到同样的效果。另请注意,由于我们统计的是文本值,“red”和“blue”用双引号括起来。如果统计的是数字,则不需要引号。
通用公式
=SUM(COUNTIF(range,{"value1","value2"}))
解释
在这个例子中,目标是统计 D5:D15 区域中包含“红色”或“蓝色”的单元格数量。为了方便起见,我们将 D5:D15 区域命名为 color。统计满足此 OR 条件的单元格数量比乍看起来要复杂,因为没有内置函数可以直接使用 OR 逻辑进行计数。COUNTIFS函数允许使用多个条件,但所有条件之间都使用 AND 逻辑连接。下面的文章将介绍几种方法。
COUNTIF + COUNTIF
一种简单、手动使用 OR 进行计数的方法是多次使用COUNTIF 函数:
=COUNTIF(color,"red") + COUNTIF(color,"blue")
在这两个例子中, COUNTIF 函数内部的范围参数都是颜色(D5:D15)。然而,第一个 COUNTIF 函数的条件 是“红色”,第二个 COUNTIF 函数的条件是“蓝色”。第一个 COUNTIF 函数返回 4,第二个 COUNTIF 函数返回 3,因此最终结果为 7。这个公式虽然可以运行,但略显冗余。
使用数组常量进行 COUNTIF 操作
配置 COUNTIF 的另一种方法是 使用包含多个筛选条件值的数组常量。以上示例即使用了这种方法:
=SUM(COUNTIF(color,{"red","blue"}))
在 SUM 函数内部,COUNTIF 函数被赋予 颜色(D5:D16) 作为范围,以及 {"red","blue"} 作为条件:
COUNTIF(color,{"red","blue"}) // returns {4,3}
这样,COUNTIF 函数就会返回两个计数:一个是“红色”的计数,一个是“蓝色”的计数。这两个计数会直接 以单个数组的形式返回给SUM 函数:
=SUM({4,3}) // returns 7
SUM 函数返回结果 7。换句话说,COUNTIF 函数会返回多个计数结果给 SUM 函数,而 SUM 函数最终返回一个结果。这是一个公式嵌套的例子。
SUMPRODUCT 函数
解决此问题的另一种方法是使用 SUMPRODUCT 函数,如下所示:
=SUMPRODUCT((D5:D15="red")+(D5:D15="blue"))
这是一个使用布尔逻辑的示例。SUMPRODUCT 函数内部有两个表达式,它们通过加法运算符(+) 连接。由于 color 包含 11 个值,因此每个表达式都会创建一个包含 11 个 TRUE 和 FALSE 值的数组:
=SUMPRODUCT({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE}+{FALSE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE})
在第一个数组中,TRUE 值对应于包含“红色”的单元格。在第二个数组中,TRUE 值对应于包含“蓝色”的单元格。当两个数组相加时,数学运算会将 TRUE 和 FALSE 值转换为 1 和 0:
=SUMPRODUCT({1;1;1;0;1;0;1;0;1;1;0})
如果只处理一个数组,SUMPRODUCT 函数会将数组中的元素相加,并返回结果 7。SUMPRODUCT 函数的另一种配置方式如下:
=SUMPRODUCT(--(D5:D15={"red","blue"}))
在这个公式中,表达式为:
D5:D15={"red","blue"})
返回一个包含 11 行 2 列的数组。双重否定会将 TRUE 和 FALSE 值强制转换为 1 和 0:
=SUMPRODUCT({1,0;1,0;0,1;0,0;0,1;0,0;1,0;0,0;0,1;1,0;0,0})
SUMPRODUCT 函数最终结果仍然是 7。
重复计算风险
使用 OR 逻辑进行计数时,请注意重复计数的风险。在本例中,“红色”和“蓝色”是同一字段的值,因此不会出现重复计数的情况。但是,如果您要统计记录,其中一个字段为“红色”或另一个字段为“蓝色”,则务必注意避免重复计数,因为在同一条记录中,这两个条件可能同时为真。










