运行 与 ARRAYFORMULA 求和

Running SUM with ARRAYFORMULA

我有一个每天的值列表,我希望每天使用数组公式对过去 7 天求和。 基本上,我想使用这个公式

=SUM(A1:A7) 在 ARRAYFORMULA 中,但我无法让它工作。

理论上它应该看起来像

ARRAYFORMULA(SUM(B1:B:B7:B)) 这当然行不通。

注意:公式必须在顶行,因为每天都会添加新数据,所以今天的第 2 行明天会变成第 3 行。为此的解决方案必须适合列的顶部单元格。

我创建了一个 sheet 示例。 Col A 是日期,Col B 是值 Col C 是7天的手动总和,仅供参考

https://docs.google.com/spreadsheets/d/1jsC5mN2Bdq5a1u2GjoufTTPmSjyurOPd1YXQEv_AGfk/edit#gid=0

我在单元格 D2 中输入了以下内容:

=flatten(
  index(
   query(
    if(
     (sequence(counta(B2:B))<sequence(1,counta(B2:B))+7)* 
     (sequence(counta(B2:B))>=sequence(1,counta(B2:B))),
     B2:B,
    ),
    "select sum(Col"&join("), sum(Col",sequence(counta(B2:B)))&")"),
  2))

你也可以使用这个old-school方法:

=ArrayFormula(if(isnumber(B:B),sumif(row(B:B),"<"&row(B:B)+7,B:B)-sumif(row(B:B),"<"&row(B:B),B:B),))

或者最好包含一个 header:

=ArrayFormula(if(B:B="",,if(isnumber(B:B),sumif(row(B:B),"<"&row(B:B)+7,B:B)-sumif(row(B:B),"<"&row(B:B),B:B),"Running Total")))