You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel排名公式返回小数结果的问题求助

Excel排名公式返回小数结果的问题求助

你好呀!我看到你在用Excel计算分组排名时遇到了返回小数的问题,咱们一起来梳理下原因和解决办法~

首先先还原一下你用到的公式:

=IF(M2=0,"",IF(M2>0,SUMPRODUCT(($B$2:$B$162=B2)*($C$2:$C$162=C2),(M2<=$M$2:$M$162)/COUNTIF($M$2:$M$162,$M$2:$M$162))))

从你提供的截图(表格中部分单元格显示1.5、2这类数值)能看到,公式确实返回了带小数点的结果。出现这个问题的核心原因是:你的公式里用了/COUNTIF($M$2:$M$162,$M$2:$M$162)来处理重复值的排名权重,当M列存在重复数值时,COUNTIF会返回该值的重复次数,比如两个相同值的话,这部分就会算出0.5,累加后自然就出现了小数。

下面给你几个实用的解决思路:

思路一:直接对结果取整

如果只是想把小数转成整数,可以用ROUND函数把原公式包裹起来,确保结果是整数:

=IF(M2=0,"",ROUND(IF(M2>0,SUMPRODUCT(($B$2:$B$162=B2)*($C$2:$C$162=C2),(M2<=$M$2:$M$162)/COUNTIF($M$2:$M$162,$M$2:$M$162)),0),0))

思路二:改用RANK.EQ实现标准整数排名

如果想要标准的并列排名规则(相同值排名相同,下一个排名自动跳过),可以用RANK.EQ结合条件判断,写法更直观也不会出现小数:

=IF(M2=0,"",RANK.EQ(M2,IF(($B$2:$B$162=B2)*($C$2:$C$162=C2),$M$2:$M$162,""),0))

注意:如果是Excel 2019及更早版本,这个是数组公式,需要按Ctrl+Shift+Enter完成输入;Excel 365/2021版本直接回车即可。

思路三:用SUMPRODUCT实现密集排名

如果想要密集排名规则(相同值排名相同,下一个排名不跳过),可以简化公式写法,直接返回整数结果:

=IF(M2=0,"",SUMPRODUCT(($B$2:$B$162=B2)*($C$2:$C$162=C2)*(M2<$M$2:$M$162))+1)

你可以根据自己需要的排名规则,选择对应的公式来解决问题哦~

备注:内容来源于stack exchange,提问作者Geo Jul

火山引擎 最新活动