ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 函数与公式 > 根据学生成绩得出要求的排名

根据学生成绩得出要求的排名

作者:绿色风 分类: 时间:2022-08-18 浏览:192
楼主
donghan
 

1、根据学生成绩(分数均为整数,包括0分)在H2:K7得出要求的排名表,要求连表头(姓名、成绩)一起写进去,结果可以作为向后处理的中间参数(再说明一下:就是单元格数组公式按F9能得出图片上编辑栏中的效果)。
2、同分数要区分排名,即不允许有相同的排名,同分数排名前后均可(即赵三和李七谁得7、8名均可)。
3、原始数据引用区域必须为B2:E7
4、字符数<150得2分,<145得4分,精彩公式可再加分。
排名.rar
2楼
xihabang
等高人了...呵呵
3楼
liuguansky
=IF(ISTEXT(B2:E7),B2:E7,LOOKUP(TEXT(B2:E7,"0;;;!0")+ROW(1:6)%+COLUMN(A:D)%,SMALL(TEXT(B2:E7,"0;;;!0")+ROW(1:6)%+COLUMN(A:D)%,ROW(1:24)),TEXT(25-ROW(1:24),"第0名")))
163字符。待修订。
4楼
roc.jame
用RANK 不行吗
5楼
高玉甫

不知楼主意思是何,郁闷。
6楼
chg515
不能打开?
7楼
杨弼芳
H2=IF(ISERROR(RANK(B2,$B$2:$E$7)),B2,RANK(B2,$B$2:$E$7)+COUNTIF($B$2:B2,B2)-1)
8楼
高玉甫

朋友,我刚才下载了您的附件,准备马上来研究一下,可是,我看到了如我附图那样的提示我心里有点不爽:保守?资源不准共享?太不那个了。这样不好.png
 
9楼
donghan
为了大家一起研究此题的最简方法,现开放权限,我先给出我的答案,有能力者再继续简化。
目前答案:
多单元格数组公式:
1、=TEXT(MATCH(ROW()&{2,3,4,5},RIGHT(SMALL(-(TEXT(B2:E7,"0;;1;-")&ROW()&{2,3,4,5}),ROW(A:A)),2),),"[<11]第0名;"&B2:E7)
2、=IF(B2:E7<"","第"&MATCH(B2:E7+COLUMN()%+ROW()%%,LARGE(IF(B2:E7<"",B2:E7,-1)+COLUMN()%+ROW()%%,ROW(A:A)),)&"名",B2:E7)
请高手们继续简化,寻求最简公式
10楼
rongjun

这两个公式都不能满足你的第1个要求。必须得到内存数组才能作为中间参数进行下一步计算,有些参数是不能省略的,省略了就成为多单元格数组而非内存数组。
11楼
donghan
=TEXT(MATCH(ROW(2:7)&{2,3,4,5},RIGHT(SMALL(-(TEXT(B2:E7,"0;;;-")&ROW(2:7)&{2,3,4,5}),ROW(A:A)),2),),"[<11]第0名;"&B2:E7)
12楼
高玉甫


学习了,谢谢您。
13楼
Timon13
我这么试 看怎么样 指点指点
=IF(ISNUMBER(B2),"第"&(RANK(B2,($B$2:$E$7),0)+COUNTIF($B$2:B2,B2)-1)&"名",B2)
ISNUMBER判断单元格是不是数字  是 则进行排序(RANK函数) 使用COUNTIF函数解决重排
                                不是数字则显示原单元格内容
再拖动复制公式完成其他排序
花了些时间,还请各位指点指点。
14楼
Timon13
回复了才看到7楼 杨弼芳 有下面的公式
IF(ISERROR(RANK(B2,$B$2:$E$7)),B2,RANK(B2,$B$2:$E$7)+COUNTIF($B$2:B2,B2)-1)
共75字符
IF(ISNUMBER(B2),"第"&(RANK(B2,($B$2:$E$7),0)+COUNTIF($B$2:B2,B2)-1)&"名",B2)
共74字符
思路一致 判断函数不同而已 学习了!
15楼
高玉甫


不错,又学到一点,谢谢了。
16楼
donghan
注意我要求的是得到内存数组哦
17楼
悟空师弟
来竞赛的都是高人,努力学习中……
18楼
tltt0503
观察楼上那么多层所给出的诸多公式,大多都没有领会楼主的题意。
题目的意思是求一个内存数组。也就是说,写出的公式不可以用“拖拽一个单元格句柄的方式来填充其余单元格”这种方式。
内存数组是选定H2:K7区域后一次性输入的,没有“拖拽”之类的过程。

以下公式,考虑到了数据源的特殊性:观察数据源发现,数据源在同列不同行存在相同“成绩”,在不同列不同行存在相同“成绩”,但是在不同列相同行不存在相同“成绩”,因此,可以选定H2:K7区域后,输入以下公式。
{=IFERROR("第"&(RANK(B2:E7,$B$2:$E$7)+COUNTIF(INDIRECT("R1C1:R"&(ROW()-1)&"C"&(COLUMN()-6),0),B2:E7))&"名",B2:E7)}

该公式长度105个字符。
声明:当修改数据源成:不同列相同行存在相同成绩时,此公式需要做修改才能使用。
19楼
悟空师弟
内存数组公式:(97字符)
  1. =IFERROR("第"&RANK(B2:E7,B2:E7)+COUNTIF(INDIRECT(CHAR(COLUMN()+57)&ROW()&":E7"),B2:E7)-1&"名",B2:E7)


普通公式:(60字符)
  1. =IFERROR("第"&RANK(B2,$B$2:$E$7)+COUNTIF(B2:$E$7,B2)-1&"名",B2)


详见附件:

排名.zip
20楼
悟空师弟
内存数组公式:(89字符)
  1. =IFERROR("第"&RANK(B2:E7,B:E)+COUNTIF(OFFSET(B2,ROW()-2,COLUMN()-8,5,4),B2:E7)-1&"名",B2:E7)
21楼
fly_fu
来竞赛的都是高人,努力学习中……

没有学不好,只有不好学!
22楼
w83365040371
  1. =TEXT(COUNT(0/(B2+ROW(B2)%+COLUMN(B2)%%<=$B$2:$E$7+ROW($2:$7)%+{2,3,4,5}%%)),"第0名;;"&B2&";")

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap