Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3251|回复: 17

[已解决]求排名排序公式的解释

[复制链接]
发表于 2014-1-17 18:59 | 显示全部楼层 |阅读模式
本帖最后由 apple_wong 于 2014-1-17 19:14 编辑

各位大大,请教一下这个排名排序公式的原理,最好是分段解说哈~谢谢
{=INDEX(C:C,1/MOD(LARGE($C$2:$C$20*100+1/ROW($C$2:$C$20),ROW(C1)),1))}

好吧,附件已上传。
最佳答案
2014-1-17 20:40
本帖最后由 tgydslr 于 2014-1-17 20:56 编辑

(, 下载次数: 46)

Book1.zip

6.32 KB, 下载次数: 5

发表于 2014-1-17 19:07 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-17 19:28 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-17 19:35 | 显示全部楼层
这个公式我觉得你如果从解题思路方面去看就好明白了
回复

使用道具 举报

 楼主| 发表于 2014-1-17 19:38 | 显示全部楼层
as0810114 发表于 2014-1-17 19:28
看懂公式学会F9.

F9按了,报错呢。
回复

使用道具 举报

发表于 2014-1-17 19:39 | 显示全部楼层
1,就这个排名来讲,可能原作者想得有点复杂了
=LARGE($A$3:$A$8,ROW(A1))
下拉也即可得到同样结果
回复

使用道具 举报

发表于 2014-1-17 19:45 | 显示全部楼层
本帖最后由 不信这样还重名 于 2014-1-17 20:03 编辑

2,再来分析下作者可能的想法,写得这么复杂应该是考虑到了精确定位(这里返回的两个88,第一个是第4行的,第二个才是第5行的),如果88前面有对应的姓名,而要求跟据成绩返回姓名时,上面那个公式就不行了,这个就可以。
回复

使用道具 举报

 楼主| 发表于 2014-1-17 19:57 | 显示全部楼层
求原理、求解释啊~
回复

使用道具 举报

发表于 2014-1-17 20:02 | 显示全部楼层
本帖最后由 不信这样还重名 于 2014-1-17 20:03 编辑

公式具体分析:
最外层是个Index(区域,最大值在区域中的位置),后面的如何确定最大值在区域中的精确位置是关键
所以原公式用了
$A$3:$A$8*100+1/ROW($A$3:$A$8)
这样子,同样的88,第4行的88+的是0.25,而第5行的88+的是0.2,这样子就让两个88区别开了,后面再用Large提取时,就很容易精确定位到第4行的行号了;里面的$A$3:$A$8*100是为了拉开数量级,避免加的值影响large判断。
large(上面分析的那部分,row())
可以依次提取出第1大,第2大。。。n大值(技巧在于此:里面包涵了行号信息,由那个1/ROW($A$3:$A$8)得到的,且跟据这个值,再反倒数下,就可以恢复原行号)
所以后面用mod(数,1)保留小数,再反倒就得到精确的行号了
回复

使用道具 举报

发表于 2014-1-17 20:05 | 显示全部楼层
这种公式只有在
。。。
张三 88
李四 88
。。。
要求按成绩升序返回姓名,且要求张三一定要排在李四前时管用
就单纯的成绩排个序,没这么复杂
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-30 18:11 , Processed in 0.689369 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表