使用Google Spreadsheets将矩阵中的列求和成数组

时间:2019-05-15 18:38:42

标签: google-sheets spreadsheet array-formulas google-sheets-formula

我需要一个公式,该公式从矩阵中获取值,对列求和并返回一个数组(行)。

SUM()似乎只在对矩阵和数组求和时返回单个值,而我的公式需要返回一个数组。它还需要放在一个单元格内。为了让您了解要查找的内容,如果仅使用2个数组,我的代码将如下所示:

=ARRAYFORMULA(A1:A10+B1:B10)

但是,我需要逐个元素地对未定义数量的数组求和,而不是以单个值结束。

感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

多列总和的公式为:

=ARRAYFORMULA(SUMIF(IF(COLUMN(A1:Z1), ROW(A1:A1000)), ROW(A1:A1000), A1:Z1000))

=ARRAYFORMULA(MMULT(IFERROR(VALUE(A1:Z1000), 0), TRANSPOSE(COLUMN(A1:Z1000)^0)))

如果最后一栏是动态的,则需要这样做:

=ARRAYFORMULA(MMULT(IFERROR(VALUE(INDIRECT("A1:"&ADDRESS(1000, COLUMNS(A:AAA), 4))), 0), 
 TRANSPOSE(COLUMN(INDIRECT("A1:"&ADDRESS(1000, COLUMNS(A:AAA), 4)))^0)))

_______________________________________________________________

0

单元格 D2

=ARRAYFORMULA(IF(LEN(INDIRECT("A2:A"&COUNTA(A2:A)+1)); 
 SUBSTITUTE(TRANSPOSE(QUERY(TRANSPOSE(F2:I16&":");;999^99)); " "; ""); ))

单元格 E19

=ARRAY_CONSTRAIN(ARRAYFORMULA(SPLIT(FILTER(INDIRECT("D2:D"&COUNTA(A2:A)+1); 
 COUNTIF(B19:B; INDIRECT("A2:A"&COUNTA(A2:A)+1))); ":"; 1; 0)*C19:C); 
 COUNTA(B19:B); COUNTA(E18:18))

单元格 J20

=ARRAYFORMULA(JOIN(":"; MMULT(
 TRANSPOSE(INDIRECT("E19:"&ADDRESS(21; COLUMN()-2; 4))); 
 TRANSPOSE(SPLIT(REPT(10; COUNTA(E19:E)); 1))^0)))&":"

注释: COLUMN()-2 表示总和位于表末两列