文章

Google 表格公式 - 计数

本文介绍 COUNTIF 和 COUNTIFS

Google 表格公式 - 计数

COUNTIF

COUNTIF 接收两个参数,第一个是 计数的范围,第二个是 计数的条件

计数条件

根据官方文档的介绍,计数条件一共针对两种情况,第一种是计数范围的值是 字符串 时,另一种是计数范围的值是 数字 时。

1. 范围是字符串

此情况下,计数条件必须是一个字符串。字符串可以包含通配符,其中 ? 用于匹配单个字符,* 用于匹配 0 个或多个字符。如果要匹配 ?*,则需要用 ~ 转义,比如 ~?

2. 范围是数字

此情况下,计数条件可以是一个数字,也可以是一个字符串。如果是一个数字,就计数等于该数字的值,如果是一个字符串,则该字符串可以只包含一个数字,也可以附加一个比较运算符前缀,支持的运算符有 =>>=<<=<>,然后计数符合该比较条件的值。

计数范围

计数范围不限制单行或者单列,如果给的是一个多行多列的范围,则在整个范围内计数。另外,该参数也可以是一个可以生成数组的数组表达式。

样表

 ABCDE
1ExpenseTodayT1T2T3
2Coffee4C1N?me10
3Newspaper1C2Name3
4Taxi10C345N?mb34
5Golf26C67 7
6Taxi8C 10
7Coffee4  45
8Gas46   
9Restaurant31   

匹配字符串

  • 公式:=COUNTIF(A2:A9, "Taxi")
  • 结果:2
  • 说明:这里的字符串并不区分大小写,所以如果匹配 "tAXI" 也是一样的结果。

通配符 1

  • 公式:=COUNTIF(A2:A9, "G*")
  • 结果:2

通配符 2

  • 公式:=COUNTIF(C2:C6, "c???")
  • 结果:1

通配符 3

  • 公式:=COUNTIF(D2:D4, "N~?m?")
  • 结果:2
  • 说明:这里的规则是,如果条件字符串中不含 ?* 这两个通配符,则 ~ 就只是一个普通的符号而已,没有任何意义。但一旦条件字符串在任意位置包含通配符,则 ~ 就会变成一个转义符,后面接通配符或者它本身会将其转义,如果后面接的不是通配符也不是它本身,则相当于不存在。这里一定注意,~ 作为转义符的前提是有通配符存在

匹配数字

  • 公式:=COUNTIF(B2:B9, 4)
  • 结果:2

比较

  • 公式:=COUNTIF(B2:B9, ">=10")
  • 结果:4

范围

  • 公式:=COUNTIF(A2:E9, 10)
  • 结果:3

匹配空单元格

  • 公式:=COUNTIF(A2:E9, "=")
  • 结果:10
  • 说明:相当于计数“等于空”的单元格。有的单元格只有空格,或者通过函数计算结果为 "",比如 ="" 等,这些并不算空。不会被匹配。

匹配非空单元格

  • 公式:=COUNTIF(A2:E9, "<>")
  • 结果:30
  • 说明:空格虽然看不见,但是会被当作普通单字符处理,并不表示空;有的单元格虽然函数计算结果为 "",但因为有函数,也不算空。

匹配无字符单元格

  • 公式:=COUNTIF(A2:E9, "")
  • 结果:10
  • 说明:使用 "" 作为条件,可以匹配到空单元格,以及函数计算结果为 "" 的单元格(比如 ="")。

COUNTIFS

其实 COUNTIFS 就是比 COUNTIF 重复多几次“范围+条件”的组合。不过这里有个限制,那就是每次范围的行列数需要保持一致。

这个倒也好理解,不过实际情况下该函数到底是怎么在多个范围里按条件计数的呢?这里经过测试之后简单描述一下。

假设在下面这个样表中,

 ABCDEFGH
1S1S2NameSexS3S4S5S6
21 JohnM14  
32 TinaF25  
431LexM3614
542TomM  25
653TimM  36
764      
8 5      
9 6      

我们使用公式 =COUNTIFS(A2:A7, ">=2", B4:B9, "<=4") 得到的结果是 3。

我们可以这样理解,在第一个范围 A2:A7 中, 每一个单元格都有一个唯一的索引,我们姑且从上到下称它们为 1,2,3……(看上去好像和值一样,但这只是一个巧合,呵呵)。在第二个范围 B4:B9 中的每一个单元格也有一个唯一的索引,也是从上到下称为 1,2,3……

这样多范围计数其实就是 计算重复出现的 索引 的个数

比如在范围 A2:A7 中符合 ">=2" 的单元格的索引有 2,3,4,5,6。在范围 B4:B9 中符合 "<=4" 的单元格的索引有 1,2,3,4。重复出现的索引是 2,3,4,所以最后计数是 3。

同样还是在上面的样表中,我们使用公式 =COUNTIFS(C2:C6, "T*", D2:D6, "M") 得到的结果是 2。

因为符合第一个条件的单元格的索引有 2,4,5,符合第二个条件的单元格的索引有 1,3,4,5,重复的索引是 4,5,所以结果是 2。

对于范围为单行的情况下也是一样的,只不过索引可以从左往右排。

那对于多行多列的情况该怎么办呢?

其实也是一样的,只不过索引在多行或者多列中连续排。

还是上面的样表,使用公式 =COUNTIFS(E2:F4, ">2", G4:H6, "<5") 得到的结果是 2。原理同上。不过可能很少会用到,就不多解释了。

本文由作者按照 CC BY 4.0 进行授权