ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 47417|回复: 28

[转帖] 条件排名和多条件排名

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-8-12 15:16 | 显示全部楼层 |阅读模式
http://www.biaogewang.com/tech.php?id=20100812

我们先看看简单的排名(从大到小)。
ABB列公式
142=RANK($A1,$A$1:$A$5)
224=RANK($A2,$A$1:$A$5)
342=RANK($A3,$A$1:$A$5)
415=RANK($A4,$A$1:$A$5)
551=RANK($A5,$A$1:$A$5)


左面的公式是直接用RANK函数得出的结果。 A列中,5是最大(第5行),所以排第1;1是最小(第4行),所以排最后(第5)。 RANK函数对相同数字会返回一样的排名,可是会影响后面的排名。 比如A列中有两个4(第1行和第3行),都排第2,可是由于有两个第2,就没有第3了。这跟我们一般理解的排名也是一样的。

SUMPRODUCT做简单的排名,同样要考虑条件。从大到小排名,实际上就是算出有多少个在列表里面的数是大于自己的。如下面Excel表格里的公式:
ABB列公式
142=SUMPRODUCT(($A$1:$A$5>$A1)*1)+1
224=SUMPRODUCT(($A$1:$A$5>$A2)*1)+1
342=SUMPRODUCT(($A$1:$A$5>$A3)*1)+1
415=SUMPRODUCT(($A$1:$A$5>$A4)*1)+1
551=SUMPRODUCT(($A$1:$A$5>$A5)*1)+1


如果你会用SUMPRODUCT做条件计数和多条件计数,这个对你应该一点难度都没有。
SUMPRODUCT(($A$1:$A$5>$A1)*1)算出了A列中有多少个数大于A1+1就是自己的排名了。
你可能会想,我们为什么不把公式改成SUMPRODUCT(($A$1:$A$5>=$A1)*1),让SUMPRODUCT在计算时包括了等于自己的项,不就不用+1了吗?
当列表中没有相同数值时,这是没有问题的。可是如果有相同数值,那就会出现问题了。
你可以试试把B1的公式改成SUMPRODUCT(($A$1:$A$5>=$A1)*1),下拉到B2:B5,你会发现B1B3的结果就会变成3,而不是我们希望的2了。

我们有时候会需要从小到大排名(如赛跑时间),用下面的公式就可以了:
ABB列公式CC列公式
143=RANK($A1,$A$1:$A$5,1)3=SUMPRODUCT(($A$1:$A$5<$A1)*1)+1
222=RANK($A2,$A$1:$A$5,1)2=SUMPRODUCT(($A$1:$A$5<$A2)*1)+1
343=RANK($A3,$A$1:$A$5,1)3=SUMPRODUCT(($A$1:$A$5<$A3)*1)+1
411=RANK($A4,$A$1:$A$5,1)1=SUMPRODUCT(($A$1:$A$5<$A4)*1)+1
555=RANK($A5,$A$1:$A$5,1)5=SUMPRODUCT(($A$1:$A$5<$A5)*1)+1

学会了怎么用SUMPRODUCT替代RANK函数,条件排名 / 多条件排名实际就只是把条件直接用乘号放在SUMPRODUCT的数组里:
ABCC列公式(区分男女从大到小排名)DD列公式(区分男女从小到大排名)
141=SUMPRODUCT(($A$1:$A$5=$A1)*($B$1:$B$5>$B1)*1)+13=SUMPRODUCT(($A$1:$A$5=$A1)*($B$1:$B$5<$B1)*1)+1
222=SUMPRODUCT(($A$1:$A$5=$A2)*($B$1:$B$5>$B2)*1)+12=SUMPRODUCT(($A$1:$A$5=$A2)*($B$1:$B$5<$B2)*1)+1
342=SUMPRODUCT(($A$1:$A$5=$A3)*($B$1:$B$5>$B3)*1)+11=SUMPRODUCT(($A$1:$A$5=$A3)*($B$1:$B$5<$B3)*1)+1
413=SUMPRODUCT(($A$1:$A$5=$A4)*($B$1:$B$5>$B4)*1)+11=SUMPRODUCT(($A$1:$A$5=$A4)*($B$1:$B$5<$B4)*1)+1
551=SUMPRODUCT(($A$1:$A$5=$A5)*($B$1:$B$5>$B5)*1)+12=SUMPRODUCT(($A$1:$A$5=$A5)*($B$1:$B$5<$B5)*1)+1

TA的精华主题

TA的得分主题

发表于 2010-8-12 15:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
收藏了,讲的很细致,谢谢分享。

TA的精华主题

TA的得分主题

发表于 2010-8-12 15:28 | 显示全部楼层
这个好,我都想了很久,想研究一下怎么样来实现重复值的排名问题啊~~~呵呵!!学习一下!!

TA的精华主题

TA的得分主题

发表于 2011-4-27 23:09 | 显示全部楼层
找了1个小时的公式,终于在你这里找到了我的需求!谢谢!

TA的精华主题

TA的得分主题

发表于 2011-4-27 23:14 | 显示全部楼层
是啊,求和函数是可以代替排名函数的,如果有COUNTIF的演示就更好了

TA的精华主题

TA的得分主题

发表于 2011-5-12 09:42 | 显示全部楼层
想请教下 多条件排名怎么能不重复呢???

TA的精华主题

TA的得分主题

发表于 2011-5-12 11:09 | 显示全部楼层
没有实用性,当有重复值时,从排名角度看没有出现想要的结果,和RANK函数结果一样呀。两个并列第2,接下来是第3呀,这才是一般理解的排名。

TA的精华主题

TA的得分主题

发表于 2011-9-17 09:14 | 显示全部楼层
呵呵,每个人的要求不同,不能这样说。

TA的精华主题

TA的得分主题

发表于 2012-1-5 07:36 | 显示全部楼层
应用这个公式好像出了点问题:单科排名正确,但总分(总班排名、总分排名)排名则把空白单元格也计算在内,要全部输入数据才会正确显示出来,但实际上有缺考的,我试了一下,不能输入文本的,否则会把文本当作最大数。谁能帮忙解决?先谢谢了!小学各班数据和小学各班数据(2),统计出来的排名方式有些不同。

成绩统计.rar

130.75 KB, 下载次数: 186

TA的精华主题

TA的得分主题

发表于 2012-5-21 23:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
真是好函数啊!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-18 08:36 , Processed in 0.046501 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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