APP下载

COUNTIF函数的特殊用法介绍

2020-03-16王志军

电脑知识与技术·经验技巧 2020年1期
关键词:数据表数组序号

王志军

COUNTIF函数,其实如果巧妙利用,可以在很大程度上完成某些特殊的任务,这里做一简单介绍。

1.按部門录入序号

如图1所示,A列原来是正常的序号编排,现在领导要求在A列按照部门录入序号,不同部门的序号都从1开始。这里可以在A2单元格输入公式“=COUNTIF(B$2:B2,B2)”,COUNTIF函数的统计区域是B$2:B2,第一个B2表示行的绝对引用,第二个B2表示相对引用。当公式向下复制时,就会依次变为B$2:B3、B$2:B4……,这是一个不断扩展的区域,从这个动态区域中统计B列部门的个数。

公式输入之后,向下拖拽或双击填充柄,很快就可以得到图2所示的序号效果。

2.统计不重复的人数

如图3所示,领导要求在E列计算不重复的员工人数,如果使用排序功能或筛选功能,不利于数据的后续更新,这里可以使用公式“=SUMPRODUCT(1/COUNTIF(A2:A18,A2:A18))”,这是一个十分常用的统计不重复数据个数的公式,其中包含了一个简单的数学逻辑:任意一个数据重复出现N次,N个1/N的和值为1。

公式中“COUNTIF(A2:A18,A2:A18)”部分是数组计算,作用是分别统计A2:A18单元格区域中每个元素出现的次数,运算过程相当于:

=COUNTIF(A2:A18,A2)

=COUNTIF(A2:A18,A3)

……

=COUNTIF(A2:A18,A18)

返回内存数组结果为:{2;2;2;2;2;2;2;2;2;2;1;1;1}

再使用1除以返回的内存数组,得到以下结果:

{0.5;0.5;0.5……;1;1;1}

用1除,即相当于计算COUNTIF函数所返回内存数组的倒数。如果单元格的值在区域中是唯一值,这一步的结果是1;如果重复出现两次,这一步的结果就有两个1/2;如果单元格的值在区域中重复出现3次,结果就有三个1/3……

即每个元素对应的倒数合计起来结果仍是1,最后使用SUMPRODUCT函数进行求和,得出不重复的人员总数,效果如图4所示。

3.提取不重复的名单

仍然是图3所示的例子,现在需要提取出A列不重复的员工名单,这里可以使用公式“=INDEX(A:A,1+MATCH(,COUNTIF(G$1:G1,A$2:A$18),))&""”,注意这是一个数组公式,编辑完成后,需要同时按下“Ctrl+Shift+Enter”组合键。公式含义如下:

首先利用COUNTIF函数,在公式所在位置上方的单元格区域中,分别查找C$2:C$15单元格区域每个数据的个数。返回一个由0和1构成的数组,如果A$2:A$18单元格区域的元素在公式上方出现过,结果就是1;如果没出现,结果就是0。COUNTIF函数的第一参数是一个扩展的区域,公式的提取结果会被重复利用。接下来利用MATCH函数,在COUNTIF函数返回的数组中查找第一个0的位置,也就是查找首次出现的数据所在的位置,由于数据表的标题行占了1行,将这个数字加1,就是需要提取的不重复数据在数据表中列的位置。最后利用INDEX函数,以MATCH函数的计算结果作为索引值,提取C列对应位置上的数据。

上述公式的&""表示空文本 ,这是因为INDEX函数提取到空白单元格的时候,会返回一个无意义的0,加上一个空文本,可以屏蔽这个无意义的0,使单元格里看起来是空白的。

公式执行之后,向下拖曳填充柄,直至出现“#N/A”的错误信息为止,最终效果如图5所示。

猜你喜欢

数据表数组序号
JAVA稀疏矩阵算法
JAVA玩转数学之二维数组排序
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
更高效用好 Excel的数组公式
技术指标选股
技术指标选股
技术指标选股
技术指标选股