首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动AVERAGEIF公式的阵列公式?

滚动AVERAGEIF公式的阵列公式?
EN

Stack Overflow用户
提问于 2020-09-14 17:25:33
回答 2查看 141关注 0票数 1

我有一个工作公式,我需要拖动这个公式来自动填充一个列,并希望将它变成一个数组公式:

代码语言:javascript
复制
=AVERAGEIF(INDIRECT("A2:A"&ROW()), ">=0",INDIRECT("A2:A"&ROW()))    

所以,如果把这个公式放在B列中,它将取A列中的值,并不断地将它们平均下来,跳过任何小于0的值。下面是一个屏幕截图示例:https://i.imgur.com/nRq8hAH.png

我如何才能为这个建立一个数组公式?

这个公式很接近,但我不知道如何添加">=0“条件:

代码语言:javascript
复制
=ArrayFormula(IF(LEN(A2:A),SUMIF(ROW(A2:A),"<="&ROW(A2:A),A2:A)/COUNTIF(ROW(A2:A),"<="&ROW(A2:A)),))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-14 20:32:22

Lambda更新

不再需要为此使用ArrayFormula

代码语言:javascript
复制
=MAP(SEQUENCE(COUNTA(A2:A)),
  LAMBDA(rowOff,
    AVERAGEIF(OFFSET(A2,0,0,rowOff),">=0"))
)

多么?

  • 对于1.# items in column中的每个元素rowOff
    • 使用AverageIf获取从顶部开始的所有事物的平均值--取rowOff行,不包括everything # items in column

旧溶液

这里有一个可以进入B2的公式(不需要拖动),但它相当复杂:

代码语言:javascript
复制
=ArrayFormula(IFERROR(IF(LEN(A2:A),MMULT(TRANSPOSE((SEQUENCE(COUNTA(A2:A),1,2)<=TRANSPOSE(SEQUENCE(COUNTA(A2:A),1,2)))*FILTER(A2:A,LEN(A2:A))),--(FILTER(A2:A,LEN(A2:A))>0))/COUNTIFS(SEQUENCE(COUNTA(A2:A)),"<="&SEQUENCE(COUNTA(A2:A)),FILTER(A2:A,LEN(A2:A)),">=0"),"")))

可读性:

代码语言:javascript
复制
=ArrayFormula(IFERROR(
    IF(
        LEN(A2:A),
        MMULT(
            TRANSPOSE(
                (SEQUENCE(COUNTA(A2:A),1,2)<=
                    TRANSPOSE(SEQUENCE(COUNTA(A2:A),1,2))
                )*FILTER(A2:A,LEN(A2:A))
            ),
            --(FILTER(A2:A,LEN(A2:A))>0)
        )/
        COUNTIFS(
            SEQUENCE(COUNTA(A2:A)),
            "<="&SEQUENCE(COUNTA(A2:A)),
            FILTER(A2:A,LEN(A2:A)),
            ">=0"
        ),
        ""
    )
))

多么?

  1. 我们可以在大小为COUNTA(A2:A)的下三角矩阵COUNTA(A2:A)的所有1's和所有非空白的A2:A上使用MMULT实现运行和,如果该数字为负值,则将其滤除。在本例中,它生成{2;2;6;6;6;6}.
  2. The COUNTIFS()生成一个要除以的元素数数组。在这里,{1;1;2;2;3;4}
  3. Then忽略了with IF.
  4. Blank的任何空白,排除了IFERROR中的任何错误。(如果前导数为负数,可能会发生#DIV/0!错误。)

票数 5
EN

Stack Overflow用户

发布于 2020-09-14 18:30:27

也许,这个公式可以帮助:

代码语言:javascript
复制
=ARRAYFORMULA(AVERAGE(IF($A$2:A2>=0,$A$2:A2,"")))

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

https://stackoverflow.com/questions/63889092

复制
相关文章

相似问题

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