考虑以下:
A B C
----------------
1 a c 1
2 b f 2
3 a c 3
...
6 a c 4
此处的目标是使用条件 SUMPRODUCT,以便当第 6 行中的值与各自列中的值匹配时,计算 SUMPRODUCT。这是有趣的事情。
使用时:
=SUMPRODUCT((A3:A5=A1),(B3:B5=B1),C3:C5)
输入参数被评估为:
=SUMPRODUCT({TRUE, FALSE, TRUE},{TRUE, FALSE, TRUE},{1, 2, 3})
但结果为 0。
现在,当使用数学运算符“在”评估公式之前将布尔值 TRUE 和 FALSE 转换为对应的 1 和 0 时,将填充正确的结果:
=SUMPRODUCT(--(A3:A5=A1),--(B3:B5=B1),C3:C5)
或者
=SUMPRODUCT(ABS(A3:A5=A1),ABS(B3:B5=B1),C3:C5)
或者
=SUMPRODUCT((A3:A5=A1)^2,(B3:B5=B1)^2,C3:C5)
ETC...,
一旦应用数学运算符,最终评估为 1 和 0,
=SUMPRODUCT({1, 0, 1},{1, 0, 1},{1, 2, 3})
我们得到了正确的值。
我们一直在为 Excel 绞尽脑汁,似乎无法正确评估它自己的输入。我们认为有一行代码缺少将 TRUE 和 FALSE 转换为 1 和 0 的 SUMPRODUCT 编译代码,并且错误捕获仅返回 0。
有什么想法吗?