excel学习库

excel表格_excel函数公式大全_execl从入门到精通

一个简单的数据排名难倒了多少Excel高手?

EBI智能数据分析俱乐部学员咨询一个数据排名问题,示例数据如下图:

【要求】

用公式计算选手排名,首先考虑正确答题数量,数量多者排名优先。如果选手正确答题数量相同,再考虑用时,用时短者排名优先。比如上图中,正确答题数量同时为20,用时最短的为第1名。

【解题思路】

这看起来就是一个简单的排名,普通排名可以用RANK函数。

因本题要求考虑答题数量和答题用时二个因素,而时间的本质就是数字,我们可以将答题数量减去答题时间作为排名的数据,在F6单元格输入公式:=C6-D6,如下图所示:

然后对辅助列“排名数据”进行排名,在G6单元格输入公式:=RANK(F6,$F$6:$F$25),就能得到正确的结果:

如果我们不用辅助列,直接使用公式,理论上用C6-D6作为第一参数(排名数据),用$C$6:$C$25-$D$6:$D$25作为第二参数(排名区域),在单元格H6输入公式:

=RANK(C6-D6,$C$6:$C$25-$D$6:$D$25)

结果无法输入,确认后提示公式错误:

我们分解公式步骤检查下:

1、选中C6-D6F9,得到计算结果:19.1940162037037

2、选中$C$6:$C$25-$D$6:$D$25F9,得到一组计算结果:

看来公式逻辑没有问题,问题出在RANK函数第二参数上:

事实上rank的第二个参数ref并不支持数组。

ref参数一般表示同时支持range(单个或连续区域引用)和合并区域(两个以上不连续区域引用的合集)为参数,这两种参数的都是引用类型。

但是有个特例,rank中的ref参数还支持连续跨多表的三维引用,如sheet1:sheet3!a1:a10.其他函数比如subtotal中的ref则并不支持连续跨多表的三维引用。应该特别指出的是,这个被我们习惯称为三维引用的东西,实际上并不是引用类型。真正的三维引用只有offsetindirect等引用函数才能够产生。

这样使用RANK函数是做不到一步解决,我们换个思路,用SUM函数。

E2单元格输入如下公式并向下填充,结果完美解决:

=SUM(--($C$6:$C$25-$D$6:$D$25>C6-D6))+1

如果是Excel2019之前版本,要按Ctrl+Shift+Enter三键组合,完成运算

【公式解释】

$C$6:$C$25-$D$6:$D$25:将C6:C25数据区域的20位选手的正确答题数量,与其相应的用时相减,得到一组数据不重复的20个数据。

$C$6:$C$25-$D$6:$D$25>C6-D6:将20个不重复的数据,与第一位选手的答题数量与用时相减的结果比较,得到一组TUREFALSE值,如下图:

--($C$6:$C$25-$D$6:$D$25>C6-D6):通过减负运算将20TUREFALSE值转变为10,如下图:

SUM(--($C$6:$C$25-$D$6:$D$25>C6-D6))+1:将2010相加,再加1,即得排名。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接