Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 滚动平均IF公式的数组公式?_Google Sheets_Google Sheets Formula - Fatal编程技术网

Google sheets 滚动平均IF公式的数组公式?

Google sheets 滚动平均IF公式的数组公式?,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我有一个工作公式,我需要拖动它来自动填充列,并希望将其变成数组公式: =AVERAGEIF(INDIRECT("A2:A"&ROW()), ">=0",INDIRECT("A2:A"&ROW())) 因此,如果你把这个公式放在B列中,它将取A列中的值,并不断地向下平均,跳过任何小于0的值。以下是一个示例屏幕截图: 我怎样才能为它建立一个数组公式 这个公式很接近,但我不知道如何添加“>=0”条件: =Ar

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

=AVERAGEIF(INDIRECT("A2:A"&ROW()), ">=0",INDIRECT("A2:A"&ROW()))    
因此,如果你把这个公式放在B列中,它将取A列中的值,并不断地向下平均,跳过任何小于0的值。以下是一个示例屏幕截图:

我怎样才能为它建立一个数组公式


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

=ArrayFormula(IF(LEN(A2:A),SUMIF(ROW(A2:A),"<="&ROW(A2:A),A2:A)/COUNTIF(ROW(A2:A),"<="&ROW(A2:A)),))

=ArrayFormula(IF(LEN(A2:A)、SUMIF(ROW(A2:A))”也许,这个公式可以帮助:

=ARRAYFORMULA(AVERAGE(IF($A$2:A2>=0,$A$2:A2,"")))

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

=ARRAYFORMULA(AVERAGE(IF($A$2:A2>=0,$A$2:A2,"")))

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

=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"),"")))
=ArrayFormula(IFERROR(IF(LEN(A2:A),MMULT(TRANSPOSE((SEQUENCE(COUNTA(A2:A),1,2)0))/COUNTIFS(SEQUENCE(COUNTA(A2:A)),“=0”),”)
可读:
=数组公式(IFERROR)(
如果(
LEN(A2:A),
姆穆特(
转置(
(序列(计数A(A2:A),1,2)0)
)/
COUNTIFS(
序列(计数A(A2:A)),
"=0"
),
""
)
))
怎么用?
  • 我们可以使用
    MMULT
    在大小为
    COUNTA(A2:a)
    的所有1和
    A2:a
    的所有非空白的下三角矩阵上实现一个运行求和,如果数字为负数,我们将其过滤掉。在这种情况下,它生成
    {2;2;6;6;6}
  • COUNTIFS()
    生成一个我们想要除以的元素数的数组。这里是
    {1;1;2;2;3;4}
  • 然后,如果
  • ,则忽略带
    的列表中的任何空格
    
  • 使用
    IFERROR
    将所有错误清空(
    #DIV/0!
    如果前导数字为负数,则可能发生错误。)

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

    =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"),"")))
    
    =ArrayFormula(IFERROR(IF(LEN(A2:A),MMULT(TRANSPOSE((SEQUENCE(COUNTA(A2:A),1,2)0))/COUNTIFS(SEQUENCE(COUNTA(A2:A)),“=0”),”)
    
    可读:
    =数组公式(IFERROR)(
    如果(
    LEN(A2:A),
    姆穆特(
    转置(
    (序列(计数A(A2:A),1,2)0)
    )/
    COUNTIFS(
    序列(计数A(A2:A)),
    "=0"
    ),
    ""
    )
    ))
    
    怎么用?
  • 我们可以使用
    MMULT
    在大小为
    COUNTA(A2:a)
    的所有1和
    A2:a
    的所有非空白的下三角矩阵上实现一个运行求和,如果数字为负数,我们将其过滤掉。在这种情况下,它生成
    {2;2;6;6;6}
  • COUNTIFS()
    生成一个我们想要除以的元素数的数组。这里是
    {1;1;2;2;3;4}
  • 然后,如果
  • ,则忽略带
    的列表中的任何空格
    
  • 使用
    IFERROR
    将所有错误清空(
    #DIV/0!
    如果前导数字为负数,则可能发生错误。)

  • 如果您使电子表格可编辑而不是仅查看,我可以演示一种方法。如果您使电子表格可编辑而不是仅查看,我可以演示一种方法。适用于下拉公式,但OP可能要求单个数组公式。适用于下拉公式,但OP可能要求单个数组公式。非常好我相信解决方案!这非常有效,谢谢!我将它添加到头中并添加了错误处理(例如:如果前几个数字是负数):
    ={“我的头名”;IFERROR(数组形式)(if(LEN(J6:J),MMULT(TRANSPOSE((SEQUENCE(COUNTA(J6:J),1,2)0))/COUNTIFS(SEQUENCE(COUNTA(J6:J)),“=0”),“),”,“),”),“)”
    @scrapheap噢,是的,我没有考虑错误处理!如果你不介意的话,我会把它添加到我的答案中。我相信这是一个很好的解决方案!这很好,谢谢!我将它添加到标题中并添加了错误处理(例如:如果前几个数字是负数):
    ={“我的标题名”;IFERROR(数组形式)(If(LEN(J6:J),MMULT(transposse)((SEQUENCE))(COUNTA(J6:J),1,2)0)/COUNTIFS(SEQUENCE(COUNTA(J6:J)),“=0”),”),”)}
    @scrapheap哦,是的,我没有考虑错误处理!如果你不介意的话,我会把它添加到我的答案中。