Excel中INDEX/MATCH配合SUMIF跨表求和报错解决方法
公式错误原因
- VLOOKUP公式参数顺序写反:现有公式是拿A4匹配Sheet2的A列返回B列值,实际匹配规则是拿Sheet1 E列值匹配Sheet2 B列,返回对应Sheet2 A列值作为判断条件;同时普通VLOOKUP仅返回首个匹配值,无法覆盖一对多的匹配场景。
- INDEX/MATCH公式存在两个问题:一是INDEX引用的
A17:A30未指定工作表,默认读取Sheet1的对应区域,取值完全错误;二是和单值调用的VLOOKUP一样,仅返回单个匹配结果,无法完成整列的批量匹配判断。
可用方案
以下公式输入到Sheet1的B4单元格,直接下拉填充到B9即可,公式使用INDEX/MATCH构建匹配逻辑,兼容全版本Excel:
=SUMPRODUCT((INDEX(Sheet2!$A$17:$A$30,MATCH(E$4:E$13,Sheet2!$B$17:$B$30,0))=A4)*F$4:F$13)
注:如果输入公式后提示参数错误,将公式内所有逗号替换为分号即可,适配不同区域设置的Excel版本。动态数组版本(365/2021及以上)输入后直接回车生效,旧版Excel需按
Ctrl+Shift+Enter三键结束数组公式输入。
如果偏好使用VLOOKUP构建匹配条件,可以使用以下公式,同样下拉填充即可:
=SUMPRODUCT((IFERROR(VLOOKUP(E$4:E$13,IF({1,0},Sheet2!$B$17:$B$30,Sheet2!$A$17:$A$30),2,FALSE),"")=A4)*F$4:F$13)
公式逻辑说明
MATCH(E$4:E$13,Sheet2!$B$17:$B$30,0):逐行匹配E4到E13的每个值在Sheet2 B17:B30中的位置INDEX/VLOOKUP部分:提取每个E列值对应的Sheet2 A列分类值- 判断提取到的分类值是否等于当前行A4的目标值,符合条件的就关联对应F列的数值,最后用SUMPRODUCT汇总所有符合条件的F列值,完成条件求和。
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

