2016-09-22 67 views
1

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

假如我想找到最低的列总数和最高的行总计以下数组是在单元格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,并且看到使用它们的高级公式,但是不太清楚如何。我会尝试回答我自己的问题,但其他建议更值得欢迎。

回答

1

你可以用你提到的MMULT来做到这一点。在下列情况应设置工作:

最小列

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

最大行:

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

注数组中的许多1S如何 - 对于行calc下,你需要一个各1个列(即3)和列相反。还要注意阵列的顺序 - 它不会以其他方式工作

0

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

列总计

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

行总计

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

这样的想法是,你创建一个单排阵{1,1,1}并通过乘以二维数组最后得到一个数组{15,18,21,24}并从中取最小值。

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

请记住,mmult与您在大学时可能学到的矩阵乘法一样,对于每个单元格,它在第一个数组的相应行中的单元格中工作,并在第二个数组中的相应列的单元格下方乘以每对并将其添加到总数中。所以第一个数组中的列数必须总是等于第二个数组中的行数。

这些,作为@Scott克拉纳提醒我,要与

进入有数组公式按Ctrl输入

+1

FWIW:不是需要证实这些数组公式用Ctrl-shift-Enter。 –