跨工作表按初始ID求和列值异常:SUMIF返回0问题排查
解决方法
推荐公式(通配符匹配,简洁高效)
由于ID是字符串类型,直接用通配符匹配前缀就能实现需求:
=SUMIF('Sprint 1'!$A$3:$A; A3&".*"; 'Sprint 1'!$J$3:$J)
这个公式会匹配Sprint表A列中所有以当前Backlog行A3内容开头、后跟小数点的ID,然后对对应J列的耗时求和。
原公式返回0的原因
你的公式存在两个核心问题:
- SUMIF参数顺序错误:SUMIF的语法是
SUMIF(条件区域, 匹配条件, 求和区域),你把第一个参数写成了Backlog的A3(单个单元格),而正确的条件区域应该是Sprint表的A列。 - 无法批量处理单元格前缀:
INDEX(SPLIT('Sprint 1'!$A$3:$A;".");1)不会逐个拆分Sprint表A列的每个单元格,它只会提取整个A列范围拆分后的第一个结果,无法和每个ID对应匹配。
备选公式(精确提取前缀,避免误匹配)
如果担心通配符会出现意外匹配(比如"11.1"被"1"匹配),可以用精确提取前缀的方式:
=SUMPRODUCT(--(LEFT('Sprint 1'!$A$3:$A; FIND(".", 'Sprint 1'!$A$3:$A&".")-1)=A3); 'Sprint 1'!$J$3:$J)
其中FIND(".", ...&".")是为了兼容没有小数点的ID(如果存在的话),--把逻辑判断结果转换为1/0,SUMPRODUCT实现条件求和。
内容的提问来源于stack exchange,提问作者Trombasso
相关产品推荐
相关产品推荐

