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哦,是的,我没有考虑错误处理!如果你不介意的话,我会把它添加到我的答案中。