Excel中如何用查找函数跨表值相乘求和以自动计算年度物料需求
解决Excel跨表自动化计算年度物料需求的问题
看起来你卡在SUMPRODUCT里的MATCH匹配逻辑上了,核心问题是第二个INDEX里的MATCH(TRUE;$B$3:$E$5>0;0)完全偏离了你的需求——它是在找物料用量表里第一个非零的列,而不是匹配你要计算的年度,这直接导致列匹配错误,结果自然不对。
先理清楚核心逻辑:要计算某年度某物料的总需求量,本质是把每个产品的「该年度销量」乘以「该产品对应该物料的用量」,然后把所有乘积加起来。因为产品在两个表的顺序不一致,所以需要精准匹配产品、年度、物料三个维度。
修正后的SUMPRODUCT公式(兼容所有Excel版本)
假设你的表格结构是:
- 销量表(表1):
A19:A22是产品名,B18:E18是年度表头,B19:E22是各产品年度销量 - 物料用量表(表2):
A3:A5是产品名,B2:E2是物料表头,B3:E5是各产品的物料用量 - 需求计算表(表3):
A11:Axx是物料名,B10:E10是年度表头,需要计算的单元格从B11开始
在B11(对应物料A、2021年度)输入以下公式:
=SUMPRODUCT( ($A$19:$A$22=$A$3:$A$5)* // 匹配两个表中的对应产品 ($B$18:$E$18=B$10)*$B$19:$E$22* // 匹配当前年度,提取对应销量 ($B$2:$E$2=$A11)*$B$3:$E$5 // 匹配当前物料,提取对应用量 )
公式解释
($A$19:$A$22=$A$3:$A$5):生成一个数组,两个表中产品名匹配的位置为1,不匹配为0,用来筛选有效的产品数据($B$18:$E$18=B$10)*$B$19:$E$22:定位到当前计算的年度列,提取所有产品的该年度销量($B$2:$E$2=$A11)*$B$3:$E$5:定位到当前计算的物料列,提取所有产品的该物料用量- SUMPRODUCT会自动把对应位置的销量和用量相乘,再把所有乘积加总,得到最终的年度物料需求
自动化填充
输入完第一个单元格的公式后,直接横向拖动填充到同一行的其他年度列,再纵向拖动填充到其他物料行即可——公式里的相对引用(B$10、$A11)会自动适配对应的年度和物料,完全不需要手动调整,哪怕产品数量超过100个也能正常工作。
额外优化(Excel 365/2021用户)
如果你用的是较新版本的Excel,也可以用XLOOKUP简化公式,可读性更强:
=SUM(XLOOKUP($A$3:$A$5, $A$19:$A$22, XLOOKUP(B$10, $B$18:$E$18, $B$19:$E$22)) * XLOOKUP($A11, $B$2:$E$2, $B$3:$E$5))
内容的提问来源于stack exchange,提问作者D. Nijland




