0

在 Excel 中,是否有数组公式或其他可以缩短下面公式的东西?这只是一个经过 12 行的示例。实际的公式会有数千行,这就是为什么我想找到一种方法来写这个公式要短得多。除了下面的内容之外,我还考虑并尝试了 SUMIF 和 SUMPRODUCT,但我还没有找到一种方法来检查多列中的指定值,然后对多行执行此操作,就像 FOR 循环一样。以下公式在单元格 J3 中。我附上了电子表格示例的图像。

电子表格

=SUM(
IF(ISNUMBER(MATCH($I$3,$B3:$E3,0)),$F3,0),
IF(ISNUMBER(MATCH($I$3,$B4:$E4,0)),$F4,0),
IF(ISNUMBER(MATCH($I$3,$B5:$E5,0)),$F5,0),
IF(ISNUMBER(MATCH($I$3,$B6:$E6,0)),$F6,0),
IF(ISNUMBER(MATCH($I$3,$B7:$E7,0)),$F7,0),
IF(ISNUMBER(MATCH($I$3,$B8:$E8,0)),$F8,0),
IF(ISNUMBER(MATCH($I$3,$B9:$E9,0)),$F9,0),
IF(ISNUMBER(MATCH($I$3,$B10:$E10,0)),$F10,0),
IF(ISNUMBER(MATCH($I$3,$B11:$E11,0)),$F11,0),
IF(ISNUMBER(MATCH($I$3,$B12:$E12,0)),$F12,0),
IF(ISNUMBER(MATCH($I$3,$B13:$E13,0)),$F13,0),
IF(ISNUMBER(MATCH($I$3,$B14:$E14,0)),$F14,0))
4

2 回答 2

1

像这样使用 SUMPRODUCT:

=SUMPRODUCT($F$3:$F$14*(MMULT(N($B$3:$E$14=I3),TRANSPOSE(COLUMN($B$3:$E$14)^0))>0))

这是一个数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 确认,而不是 Enter。

在此处输入图像描述

于 2019-12-04T18:39:05.450 回答
0

改进的解决方案

=SUMPRODUCT($F$3:$F$14,CEILING(((($B$3:$B$14=$I3)+($C$3:$C$14=$I3)+($D$3:$D$14=$I3)+($E$3:$E$14=$I3))/4),1))

想法:4 是行数/周。使用 ceiling() 来规范化值,而不是 int() n sqrt()。

扩展说明:只需添加另一个行条件并将行数调整为 4。


过去的解决方案(供参考)

=SUMPRODUCT($F$3:$F$14,INT(SQRT(INT(SQRT(($B$3:$B$14=$I3)+($C$3:$C$14=$I3)+($D$3:$D$14=$I3)))+($E$3:$E$14=$I3))))

应该做。

想法:虽然 $B$3:$B$14=$I3 部分正在创建一个 0 n 1 的数组,但 INT() n SQRT() 函数'强制''+'总和变为 1,即使有超过 1同月比赛。

请分享它是否有效/无效。(:

p/s :(扩展注释)在剖析 int() 和 sqrt() 函数后,您可以看到 sqrt(3)=1.73205 、 sqrt(2)1.414213 、 sqrt(1)=1 及其 int() 结果相同的值 (1) 。因此,假设您想添加更多行,只需在一个 int(sqrt(__)) 函数中递归地使用 'bundle' 3 行。

于 2019-12-04T19:43:51.227 回答