HI,大家好,我是星光
打个响指,提一个问题。有一份成绩表,如下图所示,A~D列是数据源。现在需要按照语文成绩降序排列,结果如E~G列所示——你会怎么编写函数公式呢?
如果是老版本的Excel,需要在E2单元格输入以下数组公式,复制填充到E2:G12单元格区域:
公式看不全可以左右拖动...▼
=INDEX(A:A,MOD(LARGE($B$2:$B$12/1%+ROW($2:$12),ROW(A1)),100))
公式的思路是先将语文成绩放大百倍/1%,然后加上对应的行号row(2:12),接着使用large函数从大到小取值,再用mod函数截取行号,最后用INDEX函数按行号取结果。
摊手,这解法不但弯而且妖娆,对函数新手朋友就很不友好。
而如果你的表格版本是Excel2021+,又或者WPS,用一个简短的SORT函数即可,毕竟版本就是生产力
E2单元格输入以下动态数组公式
=SORT(A2:B12,2,-1)
=SORT(
数据源,
[排序索引],
[升序还是降序],
[是否按列排序]
)
除了第1参数数据源以外,其它参数都是可选的。其中第2参数指定排序依据字段的索引,如果省略则默认为1。第3参数指定排序的规则,1表示升序,-1表示降序,默认为升序。第4参数指定排序的方式,True表示按列排序,False表示按行排序,默认为False。
=SORT(A2:A12)
公式只使用了表示数据源的第1参数,其余参数全部省略,表示按数据源的第1列进行升序排序。
=SORT(A2:C12,2,-1)
数据源是A2:C12区域。语文在该数据源中属于第2列,因此将第2参数设置为2。第3参数设置为-1,表示降序排序。
=SORT(A2:D12,{2,3,4},{-1,1,-1})
公式中第2参数指定的排序依据列为第{2,3,4}列,第3参数指定了各列分别对应的排序依据{-1,1,-1},也就是{降序,升序,降序}。
=SORTBY(
A2:D12,
B2:B12+C2:C12+D2:D12,
-1
)
SORTBY是SORT的姊妹版。SORT函数是按数据源原有的数据进行排序,SORTBY则是支持自定义规则排序。语法格式如下:
=SORTBY(
数据源,
排序依据1,排序方式1,
排序依据2,排序方式2
……
)
以按总分排序的公式为例,数据源为A2:D12区域,排序依据列为三科成绩相加的总分列,排序方式是-1,也就是执行降序排列。
=SORTBY(A2:D12,FIND(A2:A12,"一班二班三班四班五班六班"))
公式中,A2:D12是数据源,FIND函数查询A列班级在字符串"一班二班三班四班五班六班"中的索引位置,返回一组序列号,SORTBY第3参数省略,默认对第2参数的计算结果执行升序排序。
=MATCH(
A2:A9,
SORTBY(A$2:A$9,B$2:B$9,-1,C$2:C$9,-1,D$2:D$9,-1),
0
)
SORTBY函数按照金牌、银牌和铜牌先后优先级,对A列数据进行排序,得出一个降序排列的队伍列表。
SORTBY(A$2:A$9,B$2:B$9,-1,C$2:C$9,-1,D$2:D$9,-1)
=MATCH(C2,SORT(UNIQUE(FILTER(C$2:C$12,A$2:A$12=A2)),1,-1),0)
公式先使用FILTER函数筛选出班级相同的成绩,然后使用UNIQUE函数删除重复项,接着使用SORT函数执行降序排序,最后使用MATCH函数返回当前成绩在排序后成绩中出现的序列,也就是名次了。
打个响指,没了。有啥问题照例可以在VIP会员微信群中提问交流,都是交了钱的,有问题就直说
⏩需要系统学习Excel却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?
加入我的付费社群,学习+训练+答疑,与5000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道
🚂>>~
超低价Excel终身会员:一次付费
永久迭代学习,学习问题永久答疑
扩展阅读
本文由公众号“Excel星球”首发。
点击阅读原文系统学习Excel!