Excel如何为LARGE函数按条件筛选的TOP10分数匹配对应用户名
实现方法
完全可以实现,以下分Excel版本给出可直接复用的操作方案,所有公式均适配后续branch_units表新增日期列的需求,无需手动修改范围:
预设表结构说明(可对应你实际表调整)
branch_units表(Sheet2):
- B3:B48:存储用户名
- 第2行(C2起往后所有列):存储日期
- 每列日期对应的C3及以下行:存储对应用户当日分数
统计表(Sheet1):
- B2:指定统计日期
- D3:D12:依次填1~10,对应TOP1到TOP10的排名序号
- E3:E12:TOP10分数列
- F3:F12:待填充的对应用户名列
方案1:Excel 365/2021及以上版本(支持动态数组)
一键生成TOP10两列结果(无需单独算分数再匹配)
直接在E3单元格输入以下公式,回车后会自动溢出TOP10的「分数、用户名」两列内容:
=TAKE(SORT(FILTER(HSTACK(INDEX(branch_units!$3:$48,,MATCH(B2,branch_units!$2:$2,0)),branch_units!$B3:$B48),ISNUMBER(INDEX(branch_units!$3:$48,,MATCH(B2,branch_units!$2:$2,0))),"无匹配数据"),1,-1),10)
单独匹配用户名(已算出E列分数时使用)
F3单元格输入以下公式,下拉到F12即可,自动处理同分用户不重复:
=INDEX(branch_units!$B$3:$B$48,SMALL(IF(INDEX(branch_units!$3:$48,,MATCH($B$2,branch_units!$2:$2,0))=E3,ROW($A$3:$A$48)-2,999),COUNTIF($E$3:E3,E3)))
方案2:Excel 2019及更早版本(无动态数组)
第一步:优化TOP10分数计算(适配新增列)
E3单元格输入以下公式,按Ctrl+Shift+Enter触发数组计算,下拉到E12:
=LARGE(IF(branch_units!$2:$2=$B$2,branch_units!$3:$48),D3)
第二步:匹配对应用户名
F3单元格输入以下公式,按Ctrl+Shift+Enter触发数组计算,下拉到F12即可,自动处理同分用户不重复:
=INDEX(branch_units!$B$3:$B$48,MATCH(1,(INDEX(branch_units!$3:$48,,MATCH($B$2,branch_units!$2:$2,0))=E3)*(COUNTIF($F$2:F2,branch_units!$B$3:$B$48)=0),0))
常见问题处理
- 出现
#N/A错误:说明当日有效打分用户不足10人,可在公式外层套IFERROR(原公式,"-")将错误值替换为自定义提示 - 新增日期列后公式不生效:所有公式均用
branch_units!$2:$2匹配整行日期,新增列会自动识别无需修改
内容的提问来源于stack exchange,提问作者Komarov
相关产品推荐
相关产品推荐

