如何使用公式在单个单元格中计算连续正负数值的平均值
你可以通过以下Google Sheets公式实现需求:
单单元格自动溢出所有连续同符号段平均值
在任意空白单元格输入下方公式,即可自动输出所有连续同符号数值段的平均结果:=LET(data,A2:A16,filtered,FILTER(data,data<>""),signs,SIGN(filtered),groups,SCAN(0,SEQUENCE(ROWS(filtered)),LAMBDA(acc,i,IF(i=1,1,IF(INDEX(signs,i)=INDEX(signs,i-1),acc,acc+1)))),BYROW(UNIQUE(groups),LAMBDA(g,AVERAGE(FILTER(filtered,groups=g)))))
逻辑说明
- 用
LET定义中间变量,简化公式结构,避免重复计算 - 先过滤A2:A16范围内的空值,排除空值对符号判断的干扰
- 通过
SIGN提取每个数值的正负属性,SCAN函数会为连续同符号的数值分配相同的分组编号 - 最终按分组计算平均值,结果自动向下溢出
对齐C列求和结果的行级公式
如果你需要和C列已实现的连续求和结果对齐,在每个连续段的最后一行显示对应平均值,在D2单元格输入下方公式后下拉填充到D16即可:=IF(OR(A3="",SIGN(A3)<>SIGN(A2)),C2/COUNTIFS(A$2:A2,IF(A2>0,">0","<0"),ROW(A$2:A2),">"&IFERROR(MAX(ROW(A$1:A1)*(A$1:A1<>"")*(SIGN(A$1:A1)<>SIGN(A2))),0)),"")
适配调整说明
如果数据中包含0值,可根据需求调整SIGN部分的判断逻辑,将0归为正数、负数或单独作为一个分组计算即可。
内容的提问来源于stack exchange,提问作者Arbie
相关产品推荐
相关产品推荐

