ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 432@

[已解决] 请教如何统计多个班级各科成绩前30名,并按成绩从高到低排列,需匹配姓名、班级、成绩

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-27 09:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vba更灵活
成绩.rar (240.79 KB, 下载次数: 5)

TA的精华主题

TA的得分主题

发表于 2024-7-27 14:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Python+Pandas:

import pandas as pd

df = pd.read_excel('pandas exercise/sample334.xlsx', usecols='a:i', index_col=[0, 1])
grouped = df.stack().reset_index(level=2).groupby('level_2')
lst = []
for name, group in grouped:
    group = group[0].nlargest(30)
    group = group.reset_index()
    group['名次'] = group.index + 1
    mi = pd.MultiIndex.from_tuples([(name, i) for i in ['名次', '姓名', '班级', '成绩']])
    group = group.iloc[:, [3, 0, 1, 2]]
    group.columns = mi
    lst.append(group)
df1 = pd.concat(lst, axis=1)
df1 = df1.loc[:, ['语文', '数学', '英语', '历史', '政治', '地理', '生物']]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-27 17:06 | 显示全部楼层
hxj119 发表于 2024-7-26 23:49
有3个问题,核心就是排名问题。
(1)美式排名还是中式排名?
      例如:分数相同时排名,1,2,2,4, ...

是我说不详细了,名次那列我自己处理。如果只要求按分数从高到低排列(要匹配姓名、班级),公式会不会简单些?请教这个要求的姓名、班级、分数对应公式。万分感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-27 17:13 | 显示全部楼层
ericxzhou 发表于 2024-7-27 14:19
Python+Pandas:

import pandas as pd

谢谢,不会用VBA,能用函数更好

TA的精华主题

TA的得分主题

发表于 2024-7-27 17:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 hxj119 于 2024-7-27 17:58 编辑
432@ 发表于 2024-7-27 17:06
是我说不详细了,名次那列我自己处理。如果只要求按分数从高到低排列(要匹配姓名、班级),公式会不会简 ...

(1)排名的核心问题,同分数的怎样排名(中式还是美式?)?这问题没解决或回答,后面的操作都有BUG,
(2)最末尾相同排名的如何处理?

另,感觉你这是取前30人,而不是前30名?

TA的精华主题

TA的得分主题

发表于 2024-7-27 18:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
432@ 发表于 2024-7-27 17:13
谢谢,不会用VBA,能用函数更好

$QW9)})]UCU~R8AZ{4FFN}O.png WPS官网下载个最新版不就行了?前面几个写好的公式

TA的精华主题

TA的得分主题

发表于 2024-7-27 19:47 | 显示全部楼层
=DROP(REDUCE("",$C$1:$I$1,LAMBDA(x,y,HSTACK(x,ROW($A$1:$A$30),TAKE(SORT(HSTACK($A$2:$B$100,OFFSET(y,1,,101)),3,-1),30)))),,1)

image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-27 22:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hxj119 发表于 2024-7-27 17:57
(1)排名的核心问题,同分数的怎样排名(中式还是美式?)?这问题没解决或回答,后面的操作都有BUG,
...

美式,30名,最后1名多人并列要算

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-28 17:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-7-28 18:31 来自手机 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-8 10:00 , Processed in 0.051772 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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