Sum IF与Index Matching组合公式失效,求排查修复方案
按生产线和小时汇总数值的公式问题
问题描述
需按生产线和小时汇总数值,创建各生产线每小时总产量的汇总表。在单元格B36中输入公式:
=SUMIF($E$2:$L$2,"="&B35,INDEX($E$3:$L$9,MATCH($A36,$A$3:$A$9,0),0))
但公式返回0,预期结果应为:第1小时15、第2小时60、第3小时20、第4小时45+37等。
公式问题分析
- 格式不匹配导致条件失效:
$E$2:$L$2中的小时标识与B35的格式可能不一致(比如一个是文本、一个是数值),"="&B35无法匹配到对应列,导致SUMIF找不到符合条件的区域,返回0。 - MATCH匹配偏差:如果
A36与$A$3:$A$9中的生产线名称存在差异(比如空格、大小写不一致),MATCH会返回错误值,INDEX引用出错后SUMIF对错误区域求和也会返回0。 - SUMIF逻辑局限性:原公式用INDEX提取单一行作为求和区域,虽然尺寸与条件区域一致,但SUMIF对这种动态区域的兼容性不如多条件求和函数。
修复方法
方法1:用SUMPRODUCT实现多条件求和(推荐)
SUMPRODUCT可同时匹配生产线和小时两个条件,无需纠结格式与区域兼容性,公式更可靠:
=SUMPRODUCT(($A$3:$A$9=A36)*($E$2:$L$2=B35)*$E$3:$L$9)
逻辑说明:
$A$3:$A$9=A36:筛选对应生产线的行,返回布尔数组$E$2:$L$2=B35:筛选对应小时的列,返回布尔数组- 两个布尔数组相乘后,再与数值区域
$E$3:$L$9相乘,最后求和得到目标总产量
方法2:修正原SUMIF公式
若坚持使用SUMIF,需做以下调整:
- 统一小时格式:确保
$E$2:$L$2与B35的小时格式一致,若$E$2:$L$2是文本格式,将条件改为"="&TEXT(B35,"0") - 确保生产线名称完全匹配:检查
A36与$A$3:$A$9的生产线名称无空格、大小写差异
修正后公式示例:
=SUMIF($E$2:$L$2,TEXT(B35,"0"),INDEX($E$3:$L$9,MATCH(A36,$A$3:$A$9,0),0))
内容的提问来源于stack exchange,提问作者rohannair
相关产品推荐
相关产品推荐

