在Excel中从2d数组获取行和列总计

我想知道如何从Excel中的二维数组中获取行和列总计。 这是一个相当普遍的事情要做,但我无法通过search行和列总计find答案,所以我认为这将是值得发布它作为一个问题。

假设我想要在单元格A1:D3中find以下数组中最低的列总数和最高的行数:

1 2 3 4 5 6 7 8 9 10 11 12 

我最初的想法是沿着

 =min(A1:D3*(column(A1:D3)={1,2,3,4})) 

但这种简单的方法是行不通的。 我记得读过,在这些情况下,你必须使用mmult,并看到使用它们的先进的公式,但不知道如何。 我会尽量回答我自己的问题,但其他的build议是值得欢迎的。

你可以用你提到的MMULT来完成。 以下内容适用于您的设置:

最小的列

 =MIN(MMULT({1,1,1},A1:D3)) 

最大的行:

  =MAX(MMULT(A1:D3,{1;1;1;1})) 

请注意数组中有多less个1 – 对于行calc,每列需要1(即3),列需要1。 还要注意数组的顺序 – 它不会以其他方式工作

是的,你不得不提供包含所需总数的列数组或行数组,然后使用MAX,MIN或任何其他聚合函数来获取所需的值。

列总数

 =MIN(MMULT(TRANSPOSE(ROW(A1:D3))^0,A1:D3)) 

行总计

 =MAX(MMULT(A1:D3,TRANSPOSE(COLUMN(A1:D3))^0)) 

所以我们的想法是创build一个单行数组{1,1,1},并将其乘以二维数组,最后得到一个数组{15,18,21,24},并从中取最小值。

或者创build一个单列数组{1; 1; 1; 1},并用它乘上原始数组,最后得到最大值的数组{10; 26; 42}。

请记住,mmult的工作原理类似于您在大学时可能学到的matrix乘法,对于每个单元格,它在第一个数组的相应行中的单元格之间工作,在第二个数组中的相应列的单元格之后乘以每对数据并将它们添加到总数。 所以第一个数组中的列数必须总是等于第二个数组中的行数。

正如@Scott Craner所提醒的那样,这些是必须input的数组公式

Ctrl Shift Enter