COUNTIF函数求不重复个数是经典套路,殊不知它也贡献了中国式排名的名场面!

文摘   2024-10-18 20:01   上海  




欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路





小伙伴们好,今天和大家聊一聊排名问题。我们遇到的大多数排名问题都涉及到中国式排名,今天的这道题目也是这样的。原题目如下:




这道题目稍有一些难度的。首先要考虑中国式的排名,其次,还要考虑如何姓名为空时业绩不参与排名。

但无论怎样,处理这道题目时肯定会用到COUNTIF函数以及SUMPRODUCT函数。它们是处理中国式排名问题时一组常用的函数组合。


01

操练中国式排名





在单元格F2中输入下列公式,三键确认后向下拖曳即可。

=IF(A2="","",SUMPRODUCT(IFERROR(($C$2:$C$10>C2)/COUNTIF($C$2:$C$10,$C$2:$C$10),0))+1)

依靠SUMPRODUCT函数和COUNTIF函数可以解决中国式排名,那如何解决姓名为空不参加排名呢?其实只需要用IF函数做一个逻辑判断就可以了。

$C$2:$C$10>C2

这部分确定,在整个业绩中,有那些成绩是大于当前成绩的。这部分的结果是{FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;TRUE;TRUE},表明只有第2行和第7行的数值不符合。

COUNTIF($C$2:$C$10,$C$2:$C$10)

利用COUNTIF函数统计一下每个业绩数值出现的次数。这部分的结果为{1;3;3;3;4;0;4;4;4},表明“50”出现一次;“80”出现3次;“90”出现4次。结果中的那个“0”对应源数据中的空格。

($C$2:$C$10>C2)/COUNTIF($C$2:$C$10,$C$2:$C$10)

上述两项相除后,得到这样的一个结果:

{0;0.333333333333333;0.333333333333333;0.333333333333333;0.25;#DIV/0!;0.25;0.25;0.25}

以业绩“80”为例:

由于业绩大于“50”所以返回结果是TRUE,相当于“1”,而COUNTIF函数返回结果是3,因此就有3个“1/3”。

这部分的含义是,不论相同的数据有多少个,它们都只占用一个排名名额。

SUMPRODUCT(IFERROR(($C$2:$C$10>C2)/COUNTIF($C$2:$C$10,$C$2:$C$10),0))

将错误值转换为0后求和,得到的结果是2,表明比“50”大的业绩只有“80”和“90”两项。

SUMPRODUCT(IFERROR(($C$2:$C$10>C2)/COUNTIF($C$2:$C$10,$C$2:$C$10),0))+1

上述结果再加上1就是当前业绩的排名。

IF(A2="","",SUMPRODUCT(IFERROR(($C$2:$C$10>C2)/COUNTIF($C$2:$C$10,$C$2:$C$10),0))+1)

最后利用IF函数将不用排名的业绩转换为空值。

这条公式实际上也是借用了SUM(1/COUNTIF())这个求不重复数据个数的经典应用。


本期内容练习文件提取方式:

链接: https://pan.baidu.com/s/1Wk0qe4mqRq2Fqb3gYsRLoQ?pwd=r33i 提取码: r33i 


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!


-END-


长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助


我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章