Excel 公式函数之 COUNT & SUM
Excel是用来记录数据的,数据自然是用来统计分析的。
最简单的统计分析就是计数COUNT
和求和SUM
这种了。
计数数值元素 COUNT
COUNT
用于对数值元素进行计数。
=COUNT(A2:A7)
=COUNT(A2:A7, TRUE, "123")
- 单元格里内容,只有数值和日期都作为数值看待
- 参数里的 TRUE/FALSE 和字符串形式的数字则也作为数值看待
计数空白元素的 COUNTA 和 COUNTBLANK
COUNT
只对数值元素计数,如果关心的是非空元素,则可以使用COUNTA
。
对于非空元素的定义,如果一个单元格使用了公式,但返回值是空字符串"",这个单元格不是“空白”的,也会被计入计数。对此,我们可以理解为,单元格的内容是一个公式,是“非空”的。
有了计数非空元素的COUNTA
,就不奇怪会有一个计数空白元素的COUNTBLANK
。但会让人有点意外的是,COUNTBLANK
只接受一个参数,只能对单元格计数,而不能对参数计数。而且,COUNTBLANK
认为返回空字符串的""公式单元格是“空白”的。
比较一下这三个用于计数的公式
=COUNT("", "123") # 返回1
=COUNTA("", "123") # 返回2
=COUNTBLANK("") # 错误! 只能对单元格计数
=COUNTBLANK(A2:A7) # 对单元格计数
一个有意思的问题是COUNTA
里面的"A"是什么意思呢?也许
COUNTA = COUNT A Thing
加了如果的 COUNTIF
没有如果的世界,是没有意思的。
如果需要针对符合特定条件的单元格计数,就需要用到COUNTIF
这样的函数。
=COUNTIF(A2:A7, ">50") # 大于50才计数
=COUNTIF(A2:A7, "=50") # 等于50才计数
=COUNTIF(A2:A7, "<>50") # 不等于50才计数
=COUNTIF(A2:A7, "张三") # 内容等于指定内容才计数
=COUNTIF(A2:A7, "张*") # 匹配姓张的
=COUNTIF(A2:A7, "张??") # 匹配姓张的,名字三个字
多个如果 COUNTIFS
逻辑判断的复杂之处在于很多时候我们需要的是多个判断你的组合。
类似于IF
和IFS
的不同,COUNTIF
也有与之对应的COUNTIFS
。
=COUNTIFS(A2:A7, "张*", B2:B7, "男")
# 从 A2:A7 这一列匹配“名字”姓张的
# 从 B2:B7 这一列匹配“性别”是男的
# 两者同时符合时才进行计数
用 Tcl 描述 COUNTIFS
proc COUNTIFS {range expr args} {
set result 0
set index -1
foreach value $range {
incr index
if { ![match $value $expr] } {
continue
}
set match 1
foreach {other_range other_expr} $args {
set other_value [lindex $other_range $index]
if { ![match $other_value $other_expr] } {
set match 0
break
}
}
if {!$match} continue
incr result
}
return $result
}
求和 SUM
小朋友学习数学,学会数数之后,就是求和。求和和数数实质上都是对一组数据进行计数。
只是求和一般不考虑“空白”元素。所以去掉上面针对“空白”元素的计数公式,与之对应的有用于求和的公式。
=SUM(A2:A7)
=SUMIF(F2:F7, A2:A7, "张*")
=SUMIFS(F2:F7, A2:A7, "张*", B2:B7, "男")
可以看到带有“如果”的公式(SUMIF 和 SUMIFS)比对应的 COUNTIF 和 COUNTIFS 多了一个参数。这实际上恰恰体现了“数数是计数的基础”。对于数到的数值,我们才进行求和。