Excel 水平仅对数组(矩阵)求和

Excel 水平仅对数组(矩阵)求和

我有一个生成二维数组结果的公式。例如:

{=ROW(4:6)^TRANSPOSE(ROW(1:3))}

CTRL(当您点击++时SHIFT,Excel 会添加花括号 ENTER

我只需要对数组的水平元素求和(然后我将确定这些和的最大值)。

如果我尝试:

{=SUM(ROW(4:6)^TRANSPOSE(ROW(1:3)))}

我得到了总和,但我需要一个数组公式,该公式生成一个数组结果,其中包含每行总和的(垂直)列。我想象的是这样的:

{=HORIZONTALSUM(ROW(4:6)^TRANSPOSE(ROW(1:3)))}

在我的简单示例中,它将包含一个垂直数组 (24;30;36),然后我可以轻松获得最大值:

{=MAX(HORIZONTALSUM(ROW(4:6)^TRANSPOSE(ROW(1:3))))}

并像我的示例一样返回 36。

我意识到我可以编写一个 UDF 来轻松完成此操作,但 UDF 的可移植性不够,所以我正在寻找本机解决方案。

答案1

这能达到你想要的效果吗?

=MAX(ROW(4:6)*SUM(ROW(1:3)))

使用CTRL++确认SHIFTENTER

如果你对第二个数组求和,则可以使用它来乘以第一个数组,因为这与分别乘以值然后对结果求和相同

编辑:给出你的评论,如果初始数组是固定的,那么你可以使用MMULT这样的函数

=MAX(MMULT(ROW(4:6)*TRANSPOSE(ROW(1:3)),{1;1;1}))

{1;1;1}根据第一个数组中的列数,将发生改变

答案2

将矩阵与列向量进行后乘:

{=MMULT(主题,{1;1;1})}

其中 themat 是矩阵的命名引用。

致谢:

https://stackoverflow.com/questions/50565859/sum-rows-or-columns-of-a-2d-matrix-into-a-1d-array-in-an-excel-formula

PS:问题中给出的例子在Excel中不能运行。

PPS:本质上,之前的答案中给出了相同的解决方案,尽管为了澄清 OP 的意见,其本质被掩盖了。

相关内容