发布
社区首页 >问答首页 >包含平均函数计算移动平均的Google数组公式

包含平均函数计算移动平均的Google数组公式
EN

Web Applications用户
提问于 2022-01-29 18:22:50
回答 2查看 430关注 0票数 0

我有许多列,它们用诸如=average(E2:E4)这样的公式计算一系列移动平均线(用于3天移动平均值)。我想使用数组公式代替,因为我不断地将数据添加到列表中。问题是,我为平均E1:E3使用的数组与我想要创建的数组公式方向相同,其中的值将是,例如,E2:EE4:E

一个3天移动平均线的例子

编辑:对不起。我只是想把我的问题说得太简洁。我想要一个更通用的公式,因为我不只是做一个3天的移动平均,而是一个7天,14天,和30天,每一个单独列。我真的不想把一个分母里的30个项目加在一起。

谢谢你到目前为止的回复。

EN

回答 2

Web Applications用户

发布于 2022-01-29 22:16:19

删除F2:F中的所有内容,只留下标题。

然后,如果您在一个使用逗号作为参数描述器的国际区域设置中,请在F2中放置以下公式:

=ArrayFormula(IF(E2:E="",,(SUMIF(ROW(E2:E),"<="&ROW(E2:E)+1,E2:E)-SUMIF(ROW(E2:E),"<"&ROW(E2:E)-1,E2:E))/ARRAY_CONSTRAIN(ISNUMBER(E:E)+ISNUMBER(E2:E)+ISNUMBER(E3:E),ROWS(E2:E),1)))

如果您在一个使用分号作为参数分隔符的国际区域设置中,请在F2中使用此版本:

=ArrayFormula(IF(E2:E="";;(SUMIF(ROW(E2:E);"<="&ROW(E2:E)+1;E2:E)-SUMIF(ROW(E2:E);"<"&ROW(E2:E)-1;E2:E))/ARRAY_CONSTRAIN(ISNUMBER(E:E)+ISNUMBER(E2:E)+ISNUMBER(E3:E);ROWS(E2:E);1)))

从本质上讲,这个公式表示,“将一行后向和一行之间的数字相加,然后除以其中许多单元格持有实数(例如,不是文本、布尔值或空值)。”

票数 0
EN

Web Applications用户

发布于 2022-01-29 19:30:00

尝试:

=transpose(index(query(transpose(split(regexextract(substitute(substitute("~"&join("~",indirect("E1:E"&max(row(E:E)*(E:E<>""))))&"~~","~","#",sequence(counta(E:E),1,4,1)),"~","#",sequence(counta(E:E),1,1,1)),"#(.*)#"),"~")),"select avg(Col"&join("), avg(Col",sequence(counta(E:E)))&")"),2))

编辑:这里有一个更通用的公式,它也适用于中间的空白单元格:

=index(iferror(transpose(index(query(--transpose(split(regexextract(substitute(substitute("~"&join("~",indirect("E1:E"&max(row(E:E)*(E:E<>""))+1))&"~~","~","#",sequence(rows(indirect("E1:E"&max(row(E:E)*(E:E<>""))+1)),1,4,1)),"~","#",sequence(rows(indirect("E1:E"&max(row(E:E)*(E:E<>""))+1)),1,1,1)),"#(.*)#"),"~")),"select sum(Col"&join("), sum(Col",sequence(rows(indirect("E1:E"&max(row(E:E)*(E:E<>""))+1))))&")"),2)/transpose(mmult(transpose(n(isnumber(ifna(transpose(split(regexextract(substitute(substitute("~"&join("~",indirect("E1:E"&max(row(E:E)*(E:E<>""))+1))&"~~","~","#",sequence(rows(indirect("E1:E"&max(row(E:E)*(E:E<>""))+1)),1,4,1)),"~","#",sequence(rows(indirect("E1:E"&max(row(E:E)*(E:E<>""))+1)),1,1,1)),"#(.*)#"),"~")))))),{1;1;1})))))

演示

票数 -1
EN
页面原文内容由Web Applications提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webapps.stackexchange.com/questions/162620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档