Excel:在二维数组上映射一个函数,然后在结果列数组上调用一个函数

我想在Excel中使用单个公式,而不使用VBA或macros来遍历二维数组并生成单个值。 该公式将执行以下操作:

首先遍历数据的每一行,每行调用一个函数(在我的例子中,MAX)。 这将返回一列值。 然后调用这个值列的单个函数(在我的情况下,SUM)。 这应该返回一个单一的值。

在编程术语中,如果我以row-major-order的forms给出了一个二维数组值,那么我想将函数MAX映射到二维数组上,然后在得到的一维数组上调用SUM。

在单细胞配方中,有没有办法在Excel中做到这一点?

非常感谢。 请让我知道,如果我能以任何方式使这个问题更清楚,或者我应该在其他地方问这个问题。

这样的要求通常通过数组公式来实现。 但是对于所有这些要求没有普遍适用的解决scheme。 对于可与SUBTOTAL一起使用的function,可以如下实现: 在这里输入图像说明

{=SUM(SUBTOTAL(4,OFFSET($A$2:$E$2,ROW($A$2:$A$6)-ROW($A$2),0)))} 

这是一个数组公式。 在没有大括号的单元格中input公式,然后按[CTRL] + [SHIFT] + [ENTER]。 花括号然后应该自动出现。

工作原理:ROW部分($ A $ 2:$ A $ 6)获得一系列行号{2,3,4,5,6}。 -ROW($ A $ 2)减去开始行,所以得到的数组是{0,1,2,3,4}。 然后,OFFSET部分按{0,1,2,3,4}行移动$ A $ 2:$ E $ 2,得到一个行向量{$ A $ 2:$ E $ 2,$ A $ 3:$ E $ 3, …,$ A $ 6:$ E $ 6}。 从这些SUBTOTAL获得每行的最大值,并且SUM将这些最大值相加。

在这种情况下,我们可以使用SUMPRODUCT来代替SUM作为数组公式。 这会自动获取数组上下文中的参数。 所以用这个数组公式input公式是没有必要的:

 =SUMPRODUCT(SUBTOTAL(4,OFFSET($A$2:$E$2,ROW($A$2:$A$6)-ROW($A$2),0)))