不重复统计次数
如图一

求出非空单元格第一次出现的个数之和是多少?
整体思路将非空单元格的第一次相加,最后就可以拿到不重复的统计人数
1. 如何不统计到数据范围里面的空白单元格,只统计非空单元格?
如何让重复单元格最后只是统计1次?
问题一解决
这里在思考怎样不取到空白单元格时,本质上就是让空白单元格在次数求和时不参与进来,也就是让空白单元格的数值最后就是0。
这样考虑的时候就想到逻辑判断,逻辑值TURE和FALSE在参与计算时,可以看作1和0,所以这里用一个公式
=$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
