基于矩阵条件与多规则的Excel求和问题求助
解决Excel多条件矩阵求和返回#N/A的问题
首先,你的公式里用MATCH(1, ..., 0)是核心问题——MATCH函数是用来查找单个匹配项的位置,而你需要的是对符合所有条件的数值求和,再加上MMULT的矩阵维度不匹配,才会返回#N/A错误。
下面给你两种可行的解决方案,分别适合不同的使用场景:
方案1:用SUMPRODUCT实现单个组合求和(易理解,适合填充)
如果你的输出区域是像示例里那样按「方向+类别」排列的(比如UP行对应C23:E23的A/B/C,DOWN行对应C24:E24),在C23单元格(对应UP+A)输入以下公式,然后横向、纵向填充即可:
=SUMPRODUCT(($A$2:$A$14=$A23)*($B$2:$B$14=C$21)*($C$2:$C$14=C$22)*($D$2:$D$14=$B23)*$E$2:$E$14)
这个公式的逻辑很清晰:
$A$2:$A$14=$A23:匹配目标年份(2017)$B$2:$B$14=C$21:匹配目标月份(1)$C$2:$C$14=C$22:匹配目标类别(A/B/C)$D$2:$D$14=$B23:匹配目标方向(UP/DOWN)- 最后和数值列
$E$2:$E$14相乘,SUMPRODUCT会自动对所有符合条件的数值求和。
方案2:用MMULT批量计算所有组合的和(适合动态数组Excel)
如果你用的是Excel 365或2021(支持动态数组),可以用MMULT一次性算出所有「方向+类别」组合的和,公式如下:
=MMULT(TRANSPOSE(($A$2:$A$14=2017)*($B$2:$B$14=1)*($C$2:$C$14={"A","B","C"})*($D$2:$D$14={"UP";"UP";"UP";"DOWN";"DOWN";"DOWN"})),$E$2:$E$14)
输入后会自动返回6个结果,正好对应你期望的UP A 1、UP B 6、UP C 6、DOWN A 1、DOWN B 8、DOWN C 7。
补充:原公式出错的原因
MATCH(1, ..., 0)会尝试找第一个满足所有条件的行号,但如果有多个符合条件的行,或者没有完全匹配的行,就会返回#N/A;- MMULT要求第一个矩阵的列数等于第二个矩阵的行数,你原公式里的
--($B$17:$C$17="X")是1行2列的数组,而MATCH返回的是单个值(或错误),维度不匹配,导致计算失败。
内容的提问来源于stack exchange,提问作者Selrac
相关产品推荐
相关产品推荐

