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

Google Sheets滑动窗口自动递增范围的纯公式实现问询

实现Google Sheets滚动窗口平均值的公式方案

假设你将窗口大小(比如示例中的10)输入到单元格C1,可以通过以下两种公式实现需求:

方法1:下拉填充式公式(适合手动控制范围)

在目标起始单元格(比如B10)输入以下公式,然后下拉填充到数据末尾:

=AVERAGE(OFFSET(A$1, ROW()-ROW(B$10), 0, $C$1, 1))

公式说明:

  • OFFSET(A$1, 偏移行数, 0, 窗口大小, 1):以A1为基准点,根据当前行计算偏移量,生成对应窗口范围
  • ROW()-ROW(B$10):计算当前行与起始行的差值,确保窗口随行号下移时同步偏移(B10时偏移0行,B11时偏移1行,以此类推)
  • $C$1:固定引用窗口大小,修改C1的值可直接调整窗口长度

如果想避免OFFSET的易失性(部分场景下可能影响性能),可以改用INDEX函数:

=AVERAGE(INDEX(A:A, ROW()-ROW(B$10)+1):INDEX(A:A, ROW()))

方法2:数组公式(自动生成所有结果)

如果希望一次性生成所有符合条件的平均值,无需下拉填充,可在B列起始位置输入以下数组公式:

=ARRAYFORMULA(IF(ROW(A:A)>=C1, AVERAGE(OFFSET(A:A, ROW(A:A)-C1, 0, C1)), ""))

公式说明:

  • ARRAYFORMULA:批量计算B列所有行的值
  • IF(ROW(A:A)>=C1, ...):仅当行号大于等于窗口大小时才计算平均值,避免无效行出现错误
  • OFFSET(A:A, ROW(A:A)-C1, 0, C1):自动为每个符合条件的行生成对应的滚动窗口范围

操作步骤

  1. 在C1单元格输入窗口大小(比如10)
  2. 选择目标起始单元格(比如B10),输入上述任意一种公式
  3. 若用方法1,下拉填充到数据末尾;若用方法2,公式会自动填充所有符合条件的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:50:10