You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求列内平均最高的三连单元格组中间位置:公式合并优化求助

问题:合并公式获取连续三单元格组的中间位置

需求:在A列中找出平均数值最高的连续三个单元格组(如A1:A3或A20:A22),并获取该组中间单元格的位置。

现有两步实现方案:

  • 辅助列公式:=IF(AND(A1>AVERAGE(A1:A51), A2>AVERAGE(A1:A51), A3>AVERAGE(A1:A51)), SUM(A1:A3), 0)
  • 匹配行号公式:=MATCH(MAX(C1:C51),C1:C51,0)

疑问:能否将两个公式合并为单个单元格内的一行公式,无需使用辅助列?


解决方案

可以通过数组公式或BYROW函数实现单公式计算,以下分两种场景给出:

场景1:直接找平均最高的组(等价于找和最高的组)

因为三个数的平均=和/3,平均最高的组必然是和最高的组,可直接通过计算每组和简化逻辑:

=MATCH(MAX(BYROW(SEQUENCE(ROWS(A1:A51)-2,1,1), LAMBDA(x, SUM(OFFSET(A1,x-1,0,3))))), BYROW(SEQUENCE(ROWS(A1:A51)-2,1,1), LAMBDA(x, SUM(OFFSET(A1,x-1,0,3)))), 0)+1

公式逻辑:

  • SEQUENCE(ROWS(A1:A51)-2,1,1):生成1到49的序列,对应A列中所有连续三组的起始行索引(A1:A3到A49:A51共49组)
  • BYROW+LAMBDA:遍历每个起始行,用OFFSET选取对应连续三个单元格并求和
  • MAX:找出所有组中的最大和
  • MATCH:定位最大和对应的起始行号,最后+1得到中间单元格的行号(比如起始行1对应中间行2)

场景2:保留原辅助列的筛选逻辑(仅考虑组内三单元格都大于整列平均的组)

如果需要和原方案一致,只筛选组内每个单元格都大于A1:A51整列平均的组,可使用以下公式:

=MATCH(MAX(ARRAYFORMULA(IF((A1:A49>AVERAGE(A1:A51))*(A2:A50>AVERAGE(A1:A51))*(A3:A51>AVERAGE(A1:A51)), SUMIF(ROW(A1:A51), ">="&ROW(A1:A49), A1:A51)-SUMIF(ROW(A1:A51), ">"&ROW(A1:A49)+2, A1:A51), 0))), ARRAYFORMULA(IF((A1:A49>AVERAGE(A1:A51))*(A2:A50>AVERAGE(A1:A51))*(A3:A51>AVERAGE(A1:A51)), SUMIF(ROW(A1:A51), ">="&ROW(A1:A49), A1:A51)-SUMIF(ROW(A1:A51), ">"&ROW(A1:A49)+2, A1:A51), 0))), 0)+1

公式逻辑:

  • 用(A1:A49>AVERAGE(...))*(A2:A50>...)*(A3:A51>...)替代原AND函数(数组环境下AND无法批量计算,用乘法实现逻辑与)
  • 对符合条件的组计算和,不符合的返回0
  • 后续通过MAX+MATCH定位最大和对应的起始行,+1得到中间单元格行号

内容的提问来源于stack exchange,提问作者Reg Box

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:35:26