但去重复计数,从来就不是什么大问题。
如下图,对A1:A6单元格去重复计数。
要理解这个函数组合,也十分容易。
COUNTIF(A1:A6,A1:A6)理解理解为:对A1:A6中每个单元格都进行计数,AS计数为1,DSD计数为2…..依次类推,得出:{1;2;2;1;2;2},也就是如下图中辅助列这样的结果:
得出{1;2;2;1;2;2}这个结果后,再用1/{1;2;2;1;2;2},这样返回结果:
{1;0.5;0.5;1;0.5;0.5},也就是重复几次就变成几分之一,重复1次就1/1,重复2次就是1/2,通过这样转换,将重复次数都分成1/重复次数;重复几次就分成几份,合起来就是1。
然后用SUMPRODUCT函数求和,消除了重复次数的影响。得出去重复后的结果。
上面只是单纯的去重计数。如果需要按条件去重统计,则可以使用下面的自定义函数:
单条件不重复计数:
Functiongetdiscount(rng1AsRange,rng2AsRange,rng3AsRange)Dimarr,brr,s,dAsObject,i&,k&Setd=CreateObject(“scripting.dictionary”)arr=rng1.Valuebrr=rng2.Values=rng3.Valuek=0Fori=1ToUBound(arr)Ifarr(i,1)=sThenIfNotd.exists(s)Thenk=k+1d(s)=brr(i,1)ElseIfInStr(d(s),brr(i,1))=0Thend(s)=d(s)&”,”&brr(i,1):k=k+1EndIfEndIfNextIfk=0Thengetdiscount=””Elsegetdiscount=kEndIf’如条件出错不处理也可以是getdiscount=k,k=0Setd=NothingEndFunction
使用方法可看偶的回答。
https://www.wukong.com/question/6590332823037542670/
此外,去重复计数,应用辅助列的方法,将更加简单强大。
辅助列公式为:=COUNTIF(A$1:A1,A1)
然后用sumif或者countif函数统计辅助列为1的求和或计数。
又如,单条件进行不重复计数。
辅助列公式如下:=COUNTIFS(A$2:A2,A2,B$2:B2,B2)
然后使用countifs函数计数即可。
函数公式为:=COUNTIFS(A2:A7,E2,C2:C7,1)
当然,不重复计数还可以使用数据透视表–非重复计数来实现。
创建透视表时,勾选加载到数据模型。
默认是没有去重复计数的。
鼠标右键–值字段设置
选择非重复计数即可。
更多不重复计数的内容,视乎实际情况而选择用合适的方法。