根据下拉列表匹配目标列,动态求和该列前4个最大值
自动匹配年份列并求和前4个最大值的Excel解决方案
通用公式(兼容所有Excel版本)
使用SUMPRODUCT+LARGE+INDEX+MATCH组合实现需求,公式如下:
=SUMPRODUCT(LARGE(INDEX($B:$Z,,MATCH(A1,$B$1:$Z$1,0)),ROW(INDIRECT("1:4"))))
各函数作用:
MATCH(A1,$B$1:$Z$1,0):定位A1单元格指定年份在表头行($B$1:$Z$1)对应的列序号INDEX($B:$Z,,[列序号]):提取该年份对应的整列数据LARGE([目标列],ROW(INDIRECT("1:4"))):提取目标列的前4个最大值SUMPRODUCT:对提取出的4个最大值求和
简化公式(仅适用于Excel 365/2021及以上版本)
利用动态数组函数FILTER和SEQUENCE简化写法:
=SUM(LARGE(FILTER($B:$Z,$B$1:$Z$1=A1),SEQUENCE(4)))
各函数作用:
FILTER($B:$Z,$B$1:$Z$1=A1):直接筛选出表头与A1年份匹配的列LARGE([筛选结果],SEQUENCE(4)):生成1-4的序列,提取对应位次的最大值SUM:对这4个最大值求和
注意事项
- 请根据实际表格调整公式中的表头范围
$B$1:$Z$1和数据列范围$B:$Z,确保覆盖所有年份列及对应数据 - 若目标年份列的有效数据不足4个,通用公式会返回
#NUM!,可添加IFERROR处理,示例:
=IFERROR(SUMPRODUCT(LARGE(INDEX($B:$Z,,MATCH(A1,$B$1:$Z$1,0)),ROW(INDIRECT("1:4")))),SUM(INDEX($B:$Z,,MATCH(A1,$B$1:$Z$1,0))))
动态数组版本的处理公式:
=IFERROR(SUM(LARGE(FILTER($B:$Z,$B$1:$Z$1=A1),SEQUENCE(4))),SUM(FILTER($B:$Z,$B$1:$Z$1=A1)))
内容的提问来源于stack exchange,提问作者Hugo Almeida
相关产品推荐
相关产品推荐

