ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 325|回复: 11

[求助] 如何利用公式提取各班后十名学生?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-12-1 16:44 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各班前十名的名单比较容易提取,把班级成绩降序排列,取前十名就可以了,由于各班人数不同,提取后十名比较困难,恳请各位大仙帮忙处理一下。

如何利用公式提取各班后十名学生?.zip

48.53 KB, 下载次数: 33

TA的精华主题

TA的得分主题

发表于 2025-12-1 16:50 | 显示全部楼层
本帖最后由 mykitami 于 2025-12-1 17:01 编辑

如果有并列的怎么办?
先不考虑并列的情况
后10名
  1. =LET(a,VSTACK('G301:G307'!A2:I99),b,FILTER(a,TAKE(a,,1)<>""),c,INDEX(b,,2),REDUCE('G301'!A1:I1,UNIQUE(c),LAMBDA(x,y,VSTACK(x,TAKE(SORT(FILTER(b,c=y),3),10)))))
复制代码



前10名
  1. =LET(a,VSTACK('G301:G307'!A2:I99),b,FILTER(a,TAKE(a,,1)<>""),c,INDEX(b,,2),REDUCE('G301'!A1:I1,UNIQUE(c),LAMBDA(x,y,VSTACK(x,TAKE(SORT(FILTER(b,c=y),3,-1),10)))))
复制代码

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
数组公式,A2右拖下拖
=INDEX(全体!A:A,SMALL(MMULT(N(ROW($2:$8)>COLUMN($A:$G)),COUNTIF(全体!$B:$B,TEXT(300+ROW($1:$7),"!G0班")))-(9-COLUMN($A:$J)),ROW(A1)))

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:08 | 显示全部楼层
  1. =LET(s,VSTACK('G301:G307'!A2:I66),d,SORT(FILTER(s,TAKE(s,,1)<>""),{2,3},),DROP(REDUCE(1,UNIQUE(INDEX(d,,2)),LAMBDA(x,y,VSTACK(x,TAKE(FILTER(d,INDEX(d,,2)=y),10)))),1))
复制代码

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
下班时分,无聊动动脑筋。不知道是否符合你的要求?
  1. =LET(sr,VSTACK('G301:G307'!A2:I100),srr,FILTER(sr,TAKE(sr,,1)<>""),crr,CHOOSECOLS(srr,2),drr,CHOOSECOLS(srr,3),vs,MAP(crr,LAMBDA(a,SMALL(FILTER(drr,crr=a),10))),FILTER(srr,drr<=vs))
复制代码

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:25 | 显示全部楼层
人有言兮是然 发表于 2025-12-1 17:10
下班时分,无聊动动脑筋。不知道是否符合你的要求?

做完,发现你有个全体学生的。那还需要利用分开的sheet作什么?
利用全体的sheet可以简化很多:
=LET(s,全体!B2:.B1000,d,全体!C2:.C1000,p,d<=MAP(s,LAMBDA(a,SMALL(FILTER(d,s=a),10))),FILTER(全体!A2:.I1000,p))

TA的精华主题

TA的得分主题

发表于 2025-12-1 17:28 | 显示全部楼层
=LET(A,VSTACK('G301:G307'!A2:I999),B,FILTER(A,TAKE(A,,1)<>""),D,UNIQUE(INDEX(B,,2)),DROP(REDUCE("",D,LAMBDA(X,Y,VSTACK(X,TAKE(SORT(FILTER(B,INDEX(B,,2)=Y),3,1),10)))),1))



image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-1 18:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢各位楼主!

TA的精华主题

TA的得分主题

发表于 2025-12-1 18:58 | 显示全部楼层
后十名:
=LET(
    dataAll, VSTACK('G301:G307'!A2:I99),
    dataNonEmpty, FILTER(dataAll, INDEX(dataAll,,1)<>""),
    header, 'G301'!A1:I1,
    REDUCE(
        header,
        UNIQUE(CHOOSECOLS(dataNonEmpty, 2)),
        LAMBDA(x, y, VSTACK(x, TAKE(SORT(FILTER(dataNonEmpty, CHOOSECOLS(dataNonEmpty, 2)=y), 3, -1), 10)))
    )
)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-12-1 19:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. =DROP(REDUCE("",UNIQUE(全体!B2:B248),LAMBDA(X,Y,LET(T,SORT(FILTER(全体!A2:I248,全体!B2:B248=Y),3,-1),VSTACK(X,FILTER(T,MATCH(CHOOSECOLS(T,3),UNIQUE(CHOOSECOLS(T,3)),0)<=10))))),1)
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-10 20:06 , Processed in 0.026822 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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