【问题标题】:Arrayformula to calc sum for dynamic offset rangeArrayformula 计算动态偏移范围的总和
【发布时间】:2021-12-01 03:45:57
【问题描述】:

我正在尝试使用数组公式根据过去 14 天(最后 14 行,因为每一行都是 1 天)计算值。
我希望 N110:N 具有来自 I96:I110 的值(例如:总和)。
意思是,N110 中的值应该是 sum(I96:I110)。对于 N111,它应该是 sum(I97:I111) 等。

我有类似 = ARRAYFORMULA("I"& Row(I110:I)-14 & ":I" & Row(I110:I)) 的返回

I96:I110
I97:I111
I98:I112
...

在每一行中。

我无法将它包装到数组公式中,因为 Indirect() 在这里不起作用并且只返回第一个值。
我也尝试过使用偏移量,这导致了相同的结果。

基本上,我正在尝试使用数组公式通过具有固定大小 (14) 的动态偏移范围来计算值。

我可以使用 google apps 脚本解决它,但我想尝试使用 arrayformula。

【问题讨论】:

    标签: google-sheets array-formulas


    【解决方案1】:

    尝试:

    =INDEX(IFNA(VLOOKUP(ROW(A1:A), 
     QUERY(SPLIT(FLATTEN(ROW(A1:A)&"×"&ARRAY_CONSTRAIN(
     SPLIT(FLATTEN(QUERY(TRANSPOSE(IF(ROW(A1:A)<=TRANSPOSE(ROW(A1:A))=TRUE, 
     TRANSPOSE(A1:A)&"×", )),,9^9)), "×"), 9^9, 14 +N("14 day window"))), "×"),
     "select Col1,sum(Col2)
      where Col2 is not null
      group by Col1"), 2, )))
    

    【讨论】:

    • 谢谢,我试试!
    【解决方案2】:

    确保N110:N为空,然后将以下公式放入N110:

    =ArrayFormula(IF(I110:I="",,SUMIF(ROW(I96:I),"&lt;="&amp;ROW(I110:I),I96:I)-SUMIF(ROW(I96:I),"&lt;="&amp;ROW(I110:I)-15,I96:I)))

    此公式假设 I96:I 中的数字之间不存在空白单元格(尽管在数字列表用完后可能会有空白单元格)。

    本质上,这会将范围内的所有单元格相加,直到当前行,然后减去当前单元格标记的“15 个单元格返回”之前的行中所有单元格的总和。

    【讨论】:

    • 明确的解决方案,谢谢!
    • 很高兴它按预期工作。请花点时间将帖子标记为“最佳答案”。这会在此处提醒贡献者社区哪些问题已完全解决,并帮助未来的网站访问者更快地找到与他们自己类似的问题的相关答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多