如何在谷歌表中的数组中找到特定周期的移动平均值/最大值/最小值

问题描述

我有一个包含以下数据的谷歌表。我必须找到 14 个(任何时期)时期的移动平均线。可以通过复制粘贴平均函数找到但是我想在数组中找到它。

感谢任何人的帮助。

screenshot of data

解决方法

平均:

=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*1)&"×",)),9^9)),"×"),9^9,14 +N("14 day window"))),"select Col1,avg(Col2)
  where Col2 is not null
  group by Col1"),2,)))

enter image description here

最大:

=INDEX(IFNA(VLOOKUP(ROW(A1:A),TRANSPOSE(A1:A)&"×",max(Col2)
  where Col2 is not null
  group by Col1"),)))

分钟:

=INDEX(IFNA(VLOOKUP(ROW(A1:A),min(Col2)
  where Col2 is not null
  group by Col1"),)))
,

这是一种更简单的方法,可能对您有用:

=ArrayFormula(if(A2:A="","",(sumif(row(A2:A),"<"&row(A2:A)+14,A2:A)-sumif(row(A2:A),"<"&row(A2:A),A2:A))
/countifs(row(A2:A),">="&row(A2:A),row(A2:A),A2:A,"<>")))

enter image description here

运行平均值在数据末尾使用递减范围。