如何提取分类1中Top15非零分数的技术列表?公式问题求助
Excel公式修正:提取分类1前15个非零分不重复技术列表
需求说明
- 从数据表中提取分类1下的技术名称
- 仅保留分数>0的项
- 避免因分数重复导致同一技术名称重复出现(如分数相同的不同技术需分别显示,而非重复返回同一技术)
修正后的公式(适用于Excel 365/2021及以上版本)
=TAKE(SORT(FILTER('Data Sheet'!G2:L126, ('Data Sheet'!K2:K126=1)*('Data Sheet'!L2:L126>0)), 6, -1), 15, 1)
公式拆解
FILTER 筛选:
('Data Sheet'!K2:K126=1):筛选分类为1的行('Data Sheet'!L2:L126>0):排除分数为0的项- 两者相乘实现多条件筛选,返回符合要求的完整行数据(G列到L列)
SORT 排序:
- 第二个参数
6:指定按第6列(即L列,Score)排序 - 第三个参数
-1:按分数降序排列,确保高分技术排在前面
- 第二个参数
TAKE 提取结果:
- 第一个参数
15:提取前15行数据 - 第二个参数
1:仅提取第1列(即G列,Technologies),得到最终的技术名称列表
- 第一个参数
原公式错误分析
- SORT 参数误用:原公式中
SORT的第二个参数写为15,这是无效的——SORT的第二个参数应为排序依据的列索引,而非行数 - 未排除0分:原公式的
LARGE函数未过滤0分,可能导致0分项被纳入排名筛选范围 - 重复技术问题:原Index+Match方案因
MATCH默认返回第一个匹配分数的技术,导致分数相同时重复返回同一技术;修正后的公式通过先筛选再排序提取,会保留所有分数相同的不同技术
额外优化:处理重复技术名称
如果数据表中存在同名技术(同一名称对应多条记录),需确保每个技术仅出现一次,可加入UNIQUE函数:
=TAKE(SORT(UNIQUE(FILTER('Data Sheet'!G2:L126, ('Data Sheet'!K2:K126=1)*('Data Sheet'!L2:L126>0))), 6, -1), 15, 1)
内容的提问来源于stack exchange,提问作者Elvin Ibishli
相关产品推荐
相关产品推荐

