我有一个生成二维数组结果的公式。例如:
{=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 是矩阵的命名引用。
致谢:
PS:问题中给出的例子在Excel中不能运行。
PPS:本质上,之前的答案中给出了相同的解决方案,尽管为了澄清 OP 的意见,其本质被掩盖了。