11个求和、计数案例,争取都学一次!这个要收藏!
网友:Sumproduct函数太好用了,导致现在Excel专门的条件求和、计数函数Sumif(Countif)都不去使用了。
卢子:一部《三国演义》让大家把诸葛亮当神看待:神机妙算,无所不能。以至于周瑜感叹:既生瑜,何生亮(既生Sumif(Countif),何生Sumproduct)。其实周瑜也是一个很有才华的人,只是被掩盖了。
扯远了,回到正题。
Sumif(Countif)其实也很好用,有好事者测试了Sumifs跟Sumproduct多条件求和统计速度,前者是后者的三倍。那sumif单条件统计速度比Sumproduct快一点还是可以肯定的。不过对于普通如你我的人,可以忽略这个速度的问题。
先来了解一下Countif函数,怎么学函数,老话【F1】调出帮助,不要对每次的重复操作厌倦,帮助可以给我们提供很多有用得信息。下图是Countif函数帮助。
通俗点的语法,统计区域满足条件的个数。
=COUNTIF(条件区域,条件)
下面通过几个小例子来说明Countif的用法,2006年电脑配件销售一览表。
1.数量大于30的有几个
=COUNTIF(D4:D22,">30")
2.营业部中含河字的有几个
=COUNTIF(A4:A22,"*河*")
通配符的说明:*代表所有字符,?代表一个字符,如果需要统计营业部中两个字符,且河字在最后面可以这么写公式
=COUNTIF(A4:A22,"?河")
3.在商品这列中是否有键盘
=IF(COUNTIF(B4:B22,"键盘")>0,"存在","不存在")
如果有存在键盘Countif统计出来的次数大于0,否则就等于0。公式可以稍做简化
=IF(COUNTIF(B4:B22,"键盘"),"存在","不存在")
网友:>0这部分怎么可以省略,这是什么原理?
卢子:一起来看看下面几个判断,第一参数只要不是0,就等同于TRUE。
=IF(3,"存在","不存在"),返回存在
=IF(-3,"存在","不存在"),返回存在
=IF(0,"存在","不存在"),返回不存在
4.统计每个营业部出现的次数
=COUNTIF($A$4:$A$22,L4)
因为公式是要下拉的,防止区域改变,加绝对引用。绝对引用、相对引用、混合引用三种可以通过用【F4】键不断切换得到。
5.统计共有几个不重复营业部
=SUMPRODUCT(1/COUNTIF(A4:A22,A4:A22))
=SUMPRODUCT(1/COUNTIF(区域,区域))是计算区域不重复个数的经典公式,需要好好理解。为了便于解读公式,把区域改小,公式变成=SUMPRODUCT(1/COUNTIF(A4:A9,A4:A9))
观察
=SUMPRODUCT(1/COUNTIF(A4:A9,A4:A9))
【F9】键抹黑
=SUMPRODUCT(1/{1;3;3;2;3;2})
【Esc】键返回
=SUMPRODUCT(1/COUNTIF(A4:A9,A4:A9))
【F9】键抹黑
=SUMPRODUCT({1;0.333333333333333;0.333333333333333;0.5;0.333333333333333;0.5})
【Esc】键返回,在单元格按回车看到结果:3
分析
【F9】键观察有时并不太直观,回到工作表中继续看看。
=COUNTIF(A4:A9,A4:A9)是多单元格数组,等同于=COUNTIF($A$4:$A$9,A4)下拉的结果,也就是统计每个单元格本身出现的次数,如1。
=1/COUNTIF(A4:A9,A4:A9) 是多单元格数组,等同于=1/COUNTIF($A$4:$A$9,A4)下拉的结果,也就是1/每个单元格本身出现的次数,为了让数据更直观转换成分数形式,如2,出现3次就变成1/3,出现2次就变成1/2,出现1次就1。1/3+1/3+1/3=3*(1/3)=1,1/N+…+1/N=N*(1/N)=1,不管出现几次,相加都等于1。
最后将这些相加就是得到不重复的数量,如3。
解读公式的一些习惯:
把区域改小,这样便于查看,如A1:A1000改成A1:A5
【F9】键配合【Ctrl+Z】或者【Esc】键不断地看运算过程再返回,重复到理解为止
输入公式回到单元格查看运算过程,这种相对比较直观
分析
第2,3点可选,看你对公式的熟练程度,如果不熟练选择3,熟练的话选择2。
关于计数就说到这里,回头再聊聊求和。
先来了解下SUMIF函数的帮助。
通俗语法:
=SUMIF(条件区域,条件,求和区域)
2006年电脑配件销售一览表,进行说明。
6. 汇总显示器的数量
=SUMIF(B4:B22,"显示器",D4:D22)
7.数量大于30的总数量
=SUMIF(D4:D22,">30")
第3参数省略,求和区域就相当于D4:D22,公式的作用等同于
=SUMIF(D4:D22,">30",D4:D22)
8.汇总数量在30至40的数量总和
=SUMIF(D4:D22,">=30")-SUMIF(D4:D22,">40")
[30,无穷大)跟(40,无穷大)的交集是(40,无穷大),[30,无穷大)减去交集(40,无穷大)刚好是[30,40]这个区间,所以>=30的总和减去>40的总和就是30至40的总和。
有的人喜欢缩减字符,而用下面的公式,虽然字符有所减少,但理解上就变得更费劲。
=SUM(SUMIF(D4:D22,{">=30",">40"})*{1,-1})
公式:*{1,-1},其实就是让>=30的汇总显示本身,>40的显示负数,也就是前面减去后面。
网友:这个没有点数学基础真的不好理解,看来数学还是挺重要的。
卢子:很多东西都是相互借鉴的,学好数学有助于学好函数。
9.最后字符为河且总字符为3个的营业部的总金额
=SUMIF(A4:A22,"??河",F4:F22)
?代表1个字符,??河就是最后字符为河且是3个字符。
10.数字包含错误值,怎么避开错误值求和
=SUMIF(A:A,"<9E+307")
9E+307是9乘以10的307次方,相当于Excel最大的数字,任何数字都比它小。数据的排序依据为数字<文本<逻辑值<错误值,再大的数字都比不上错误值,所以可以避开错误值求和。
11.多个区域求型号等于A03的总数量。
=SUMIF(A2:G10,"A03",B2)
=SUMIF(A2:G10,"A03",B2:H10)
两个公式的效果是一致的,Sumif第3参数会自动扩展区域,但不建议简写,会导致运算速度变慢。
帮助说明:
sum_range 参数与 range 参数的大小和形状可以不同。求和的实际单元格通过以下方法确定:使用 sum_range 参数中左上角的单元格作为起始单元格,然后包括与 range 参数大小和形状相对应的单元格。但是,当 SUMIF 函数中的range和 sum_range 参数不包含相同的单元格个数时,工作表重新计算需要的时间可能比预期的长。
网友:原来简单不一定好,简单是以付出效率作为代价的。
卢子:在使用的过程中还是使用标准用法,而学习过程中多了解下其他用法也好。
Sumif跟Countif函数有点相似,只要理解一个,要了解另一个就变得简单。多条件求和Sumifs跟Countifs也比较常见,有兴趣的话可以了解下。
推荐:SUMIF、SUMIFS和SUMPRODUCT三大函数详解
你还知道求和、计数有什么新案例?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)