今天我们来一起探讨一下不重复统计次数的问题,并以实例来作为探讨案例。如图一
看到这个题目和要求,本质上是要求求出非空单元格第一次出现的个数之和是多少?整体思路就是将非空单元格的第一次相加,最后就可以拿到不重复的统计人数但是有两个问题必须考虑一下1.如何不统计到数据范围里面的空白单元格,只统计非空单元格?。
2.如何让重复单元格最后只是统计1次?问题一解决这里在思考怎样不取到空白单元格时,本质上就是让空白单元格在次数求和时不参与进来,也就是让空白单元格的数值最后就是0这样考虑的时候就想到逻辑判断,逻辑值TURE和FALSE在参与计算时,可以看作1和,所以这里用一个公式。
=$C$2:$C$18<>””就可以让非空单元格全部都是TURE,空白单元格都是FALSE那么问题一就得到解决最后会形成数组{TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE}。
问题二解决如何让数据重复的单元格最后拿到的值是1,这里想到分数的形式,例如如果一个数重复5次,只需要用1除以出现的总次数,最后相加就会得到1,1/5+1/5+1/5+1/5+1/5=1由于问题一解决的时候,刚好让非空单元格全部返回的是TURE的值,也就是1可以满足这个想法的需求。
统计一个值出现的总次数,这里就需要引入一个函数COUNTIF函数,是统计一个区域,某个值出现的次数例如A1="1",A2="2",A3="2",那么=COUNTIF(A1:A3,A2),返回值是2这个EXCEL有一个特殊判断,有一个特殊判断,EXCEL里面对于文本形的数字,是默认会当作数值来进行判断,并且EXCEL数值精度只有15位,遇到身份证这样的超过18位的数值,EXCEL会只根据前15位进行判断,以表一的数据为例,如果输入公式:
=COUNTIF($C$2:$C$18,C2)返回值将会是8,而不是1,因为EXCEL当作数值时,只会取前面15位进行判断,如图二
这个时候需要在参数地方加一个通配符“*”来进行操作使得公式变为=COUNTIF($C$2:$C$18,C2&"*")意思是要匹配包含C2单元格文本的次数,EXCEL这个时候就会按照问题进行匹配如图三
由于要与问题1形成的TURE和FALSE数组相对应所以公式为=COUNTIF($C$2:$C$18,$C$2:$C$18&"*")这个公式会对C2:C18的每一个单元格进行取值形成一个次数的数组相当于数组
{1;1;3;3;3;8;8;8;8;8;8;8;8;2;2;1;8}最后形成最终公式=SUM(($C$2:$C$18<>"")/COUNTIF($C$2:$C$18,$C$2:$C$18&"*"))由于是数组求和,需要Ctrl+Shift+Enter
如果需要本题练习素材回复005想了解更多精彩内容,快来关注哆啦的家
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。