如何修改Excel SUMPRODUCT+SUMIFS公式实现按表头匹配求和?
解决方案
修改后的公式(简洁版)
=SUMPRODUCT(SUMIFS(INDEX(INDIRECT("'"&CGUs&"'!A:XFD"),,MATCH(INDIRECT("R1C"&COLUMN(),FALSE),INDIRECT("'"&CGUs&"'!1:1"),0)),INDIRECT("'"&CGUs&"'!A:A"),'Actuals Consolidated'!$A9)
公式说明
- 获取当前列表头:
INDIRECT("R1C"&COLUMN(),FALSE)提取公式所在列第1行的表头文本,替代原公式依赖列位置的逻辑。 - 匹配目标表对应列:
MATCH(..., INDIRECT("'"&CGUs&"'!1:1"),0)在所有目标工作表的第1行(表头行)中,定位与当前表头完全匹配的列号。 - 引用目标列数据:
INDEX(INDIRECT("'"&CGUs&"'!A:XFD"),,列号)基于匹配到的列号,引用目标工作表中对应整列的数据(A:XFD覆盖Excel全列范围,可根据实际数据规模缩小)。 - 保留核心求和逻辑:
SUMPRODUCT与SUMIFS的条件求和逻辑不变,依然按'Actuals Consolidated'!$A9的匹配条件汇总数据。
注意事项
- 若目标工作表的表头不在第1行,需将公式中的
1:1改为对应行号(如2:2)。 - 表头文本需完全匹配(包括大小写、空格),否则
MATCH无法定位目标列。 - 若目标表存在重复表头,
MATCH会返回第一个匹配列的结果。
内容的提问来源于stack exchange,提问作者kbyrnsie13
相关产品推荐
相关产品推荐

