【问题标题】:Summation of columns in matrix into an array将矩阵中的列求和到数组中
【发布时间】:2019-05-15 18:38:41
【问题描述】:

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

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

=ARRAYFORMULA(A1:A10+B1:B10)

但是,我需要按元素对未定义数量的数组求和,而不是最终得到单个值。

【问题讨论】:

  • “未定义数量的数组”是指“很多列”?或者你的意思是你不知道最后一列是什么?
  • 我基本上不能对每一列单独使用'+',因为我不知道矩阵将包含多少列。 @player0

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


【解决方案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)))

_______________________________________________________________

单元格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 表示总和位于表格末尾的两列

【讨论】:

  • 有没有办法用一个不绑定到特定单元格的矩阵来做到这一点?例如,将 split() 函数中的多个数组形成为矩阵。 (示例矩阵:split(filter(C:C;B:B=A1);":";1;0),其中 B:B 中的单元格都是用 ':' 分隔的数字,如 1:2:3 :4:5)
  • 我的主工作表一团糟,但我设置了另一个工作表,这几乎就是我所追求的:docs.google.com/spreadsheets/d/…
猜你喜欢
  • 1970-01-01
  • 2014-07-21
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2013-09-20
  • 1970-01-01
  • 2015-06-10
相关资源
最近更新 更多