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

时间:2016-09-22 15:34:38

标签: arrays excel multidimensional-array excel-formula

我想知道如何从Excel中的2D数组中获取行和列总计。这是一个相当常见的事情,但我无法通过搜索行和列总数找到答案,所以我认为值得将其作为一个问题发布。

假设我想在以下数组中找到最低列总数和最高行总数,该数组位于单元格A1:D3中: -

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

我最初的想法是

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

但这种简单的方法不起作用。我记得读过你在某些情况下必须使用mmult并且已经看到使用它们的高级公式但是不太记得如何。我将尝试回答我自己的问题,但其他建议非常受欢迎。

2 个答案:

答案 0 :(得分:1)

如您所述,您可以使用MMULT执行此操作。以下内容适用于您的设置:

最小的列

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

最大的一行:

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

注意数组中有多少1个 - 对于行计算,每列需要1(即3),而对于列则反之亦然。还要注意数组的顺序 - 它不会以相反的方式工作

答案 1 :(得分:0)

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

列总计

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

行总计

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

所以我的想法是你创建一个单行数组{1,1,1}并将它乘以2D数组以最终得到一个数组{15,18,21,24}并从中获取最小值它

或者创建一个单列数组{1; 1; 1; 1}并将原始数组乘以最终得到一个数组{10; 26; 42},从中得到最大值。

请记住,mmult的工作方式类似于您在大学时可能学到的矩阵乘法,对于每个单元,它在第一个数组的相应行中的单元格中工作,然后在第二个数组中相应列的单元格中乘以每个对,将它们添加到总数中。因此,第一个数组中的列数必须始终等于第二个数组中的行数。

正如@Scott Craner提醒我的那样,必须用

输入的数组公式

Ctrl Shift Enter