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

如何基于索引对二维矩阵特定连续范围计算平均值?

用Excel函数实现矩阵行优先分段平均值计算

完全可以用Excel函数实现你的需求,无需手动扁平化矩阵,以下是两种实用方案:

方案一:Excel 365/2021 动态数组方案(推荐)

利用SEQUENCE生成元素索引,结合INDEX按行优先定位元素,最后用AVERAGE计算平均值。

假设矩阵左上角为A1,数据区域是A1:E30(5列30行),按你的分段规则:

  • 第1段:前6个元素,起始序号1,长度6
  • 第2段:接下来3个元素,起始序号7,长度3
  • 第3段:接下来2个元素,起始序号10,长度2
  • 第4段:接下来4个元素,起始序号12,长度4

对应公式分别为:

  1. 第1段平均值:
    =AVERAGE(INDEX(A1:E30, INT((SEQUENCE(6)-1)/5)+1, MOD(SEQUENCE(6)-1,5)+1))
  2. 第2段平均值:
    =AVERAGE(INDEX(A1:E30, INT((SEQUENCE(3,1,7)-1)/5)+1, MOD(SEQUENCE(3,1,7)-1,5)+1))
  3. 第3段平均值:
    =AVERAGE(INDEX(A1:E30, INT((SEQUENCE(2,1,10)-1)/5)+1, MOD(SEQUENCE(2,1,10)-1,5)+1))
  4. 第4段平均值:
    =AVERAGE(INDEX(A1:E30, INT((SEQUENCE(4,1,12)-1)/5)+1, MOD(SEQUENCE(4,1,12)-1,5)+1))

公式说明:

  • SEQUENCE(n,1,s):生成从s开始的n个连续整数,对应行优先的元素序号
  • INT((序号-1)/5)+1:计算元素所在的行号(5为矩阵列数)
  • MOD(序号-1,5)+1:计算元素所在的列号
  • INDEX:根据行号列号提取对应元素,返回数组后AVERAGE直接计算平均值

方案二:兼容旧版Excel的SUMPRODUCT方案

如果使用无动态数组的旧版Excel,可通过计算元素序号筛选目标分段,再计算平均值:

以第1段(前6个元素)为例:
=SUMPRODUCT((ROW(A1:E30)-ROW(A1))*5+COLUMN(A1:E30)-COLUMN(A1)+1<=6,A1:E30)/6

公式说明:

  • (ROW(A1:E30)-ROW(A1))*5+COLUMN(A1:E30)-COLUMN(A1)+1:计算每个元素在一维行优先序列中的序号(从1开始)
  • (序号<=6):生成布尔数组,标记属于目标分段的元素
  • SUMPRODUCT:将标记为TRUE的元素求和,再除以元素个数得到平均值

调整公式中的条件即可计算其他分段:

  • 第2段:将<=6改为>6<=9
  • 第3段:改为>9<=11
  • 第4段:改为>11<=15

关于你设想的OFFSET思路补充

你提到的AVERAGE(OFFSET(reference,X,0,Y,1))思路,因OFFSET只能取矩形区域,当分段跨多行且最后一行不满列时,会包含多余元素,灵活性不足。比如取第2段(序号7-9),需拆分写为:
=AVERAGE(OFFSET(A1,1,1,1,2), OFFSET(A1,2,0,1,1))
这种写法不如上述两种方案实用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:35:22