Google Sheets中ARRAYFORMULA+SUMIFS计算异常问题求助
问题解决:多Sheet混合类型数据的SKU库存汇总
原公式问题分析
- 类型不匹配漏算:SUMIFS仅统计数值类型单元格,C列中以字符串形式存储的数字会被直接忽略,导致求和结果偏小。
- 数组逻辑冲突:ARRAYFORMULA与SUMIFS组合时,用整列
$B:$B作为条件数组会触发SUMIFS聚合逻辑异常,无法正确遍历所有SKU的匹配项。
修正后的公式方案
方案1:BYROW+SUMPRODUCT(推荐,处理混合类型更稳定)
=BYROW(B:B, LAMBDA(sku, IF(sku="", "", SUMPRODUCT(--('Inventory Entry'!H:H=sku), IFERROR(VALUE('Inventory Entry'!C:C), 0)) + SUMPRODUCT(--('Inventory Entry - DONE'!H:H=sku), IFERROR(VALUE('Inventory Entry - DONE'!C:C), 0)) )))
- BYROW:逐行遍历当前表B列的每个SKU,空SKU返回空值,避免无效计算。
- --('表'!H:H=sku):将SKU匹配的行转换为1(匹配)/0(不匹配),作为求和权重。
- IFERROR(VALUE(...), 0):强制将C列的字符串/数值统一转为数值,非数字内容(如文本备注)自动转为0,避免求和错误。
方案2:合并表数据后过滤求和
=BYROW(B:B, LAMBDA(sku, IF(sku="", "", SUM(FILTER(IFERROR(VALUE({'Inventory Entry'!C:C; 'Inventory Entry - DONE'!C:C}), 0), {'Inventory Entry'!H:H; 'Inventory Entry - DONE'!H:H}=sku)) )))
- 先将两个表的C列、H列分别合并,统一转换数值后,用FILTER筛选出匹配当前SKU的行再求和。
验证建议
- 取单个异常SKU,用
=SUMPRODUCT(--('Inventory Entry'!H:H="异常SKU"), IFERROR(VALUE('Inventory Entry'!C:C),0))单独计算单表结果,确认是否包含所有记录。 - 检查C列是否存在隐藏字符(如空格),可先用
=TRIM(C2)清理后再测试。
内容的提问来源于stack exchange,提问作者lostest
相关产品推荐
相关产品推荐

