Google sheets 行累计和的列计数公式

Google sheets 行累计和的列计数公式,google-sheets,array-formulas,countif,cumulative-sum,Google Sheets,Array Formulas,Countif,Cumulative Sum,我有一个网格: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 我对行进行累积总计,因此得到: 1 3 6 10 15 2 5 9 14 20 3 7 12 18 25 4 9 15 22 30 1 3 4 4 4 然后我沿着超过3的累计总数的列进行计数,因此我得到: 1 3 6 10 15 2

我有一个网格:

1   2   3   4   5

2   3   4   5   6

3   4   5   6   7

4   5   6   7   8
我对行进行累积总计,因此得到:

1   3   6   10  15

2   5   9   14  20

3   7   12  18  25

4   9   15  22  30
1   3   4   4   4
然后我沿着超过3的累计总数的列进行计数,因此我得到:

1   3   6   10  15

2   5   9   14  20

3   7   12  18  25

4   9   15  22  30
1   3   4   4   4
现在,我可以在不创建中间网格(包含累计总数)的情况下获得最终单行结果了吗?我有很多数据,需要保存在单元格上。

您可以尝试:

=ARRAYFORMULA(countif(A:A,">3"))

=ARRAYFORMULA(countif(((A:A)*(B:B)),">3"))

=ARRAYFORMULA(countif(((A:A)*(B:B)*(C:C)),">3"))

=ARRAYFORMULA(countif(((A:A)*(B:B)*(C:C)*(D:D)),">3"))

=ARRAYFORMULA(countif(((A:A)*(B:B)*(C:C)*(D:D)*(E:E)),">3"))

在这种情况下,“*”是一个“+”。

这是可能的,但您需要了解矩阵乘法的基础知识,才能理解并使公式适合您的数组。如果A1:E4在您的示例中具有第一个矩阵,则解决方案:

=ARRAYFORMULA(MMULT(--TRANSPOSE(MMULT(A1:E4,--(TRANSPOSE(COLUMN(A1:E4))<=(COLUMN(A1:E4))))>3),ROW(A1:A4)^0))
=数组公式(MMULT(--转置(MMULT(A1:E4,--(转置(A1:E4列))3),行(A1:A4)^0))
  • 行内累积总计的内部结果
  • 如果满足条件
    >3
    ,则计算总数的外部结果
  • 比较列(或行,以较长者为准),将所需的{1,0}数组与MMULT进行比较

您可以得到这样的单行:

=ARRAYFORMULA(TRANSPOSE(MMULT(N(TRANSPOSE(MMULT(A1:E4,
 N(TRANSPOSE(COLUMN(A1:E4))<=(COLUMN(A1:E4))))>3)), ROW(A1:A4)^0)))
【代码】=ARRAYFORMULA(转置)N(转置)N(转置), N(转置(列(A1:E4))3),行(A1:A4)^0)