如何编写公式根据指定单元格的值选择不同间隔的单元格计算平均值?
如何编写公式根据指定单元格的值选择不同间隔的单元格计算平均值?
嘿,这个需求我刚好之前处理过,其实用Excel的基础函数组合就能轻松搞定,分两种场景给你说,兼顾新旧版本的Excel:
一、Excel 365/2021及以上版本(支持SEQUENCE函数)
直接用这个公式就可以实现你的需求:
=AVERAGE(INDEX(B:B, SEQUENCE(3, 1, myValueCell, myValueCell)))
我给你拆解下每个部分的作用:
SEQUENCE(3, 1, myValueCell, myValueCell):生成一个包含3个数字的序列,起始值就是myValueCell里的数值,步长也和这个数值一致。比如myValueCell是1时,生成1、2、3;是2时生成2、4、6,完全对应你要的三个单元格的行号。INDEX(B:B, 生成的序列):把这些行号对应到B列的单元格上,直接得到咱们要计算的目标单元格集合。- 最后套上
AVERAGE函数,就能自动算出这三个单元格的平均值了,是不是很直观?
二、旧版本Excel(无SEQUENCE函数)
这种情况咱们用数组公式来实现,输入完公式后记得按Ctrl+Shift+Enter组合键确认(新版本Excel直接回车即可):
=AVERAGE(INDEX(B:B, ROW(1:3)*myValueCell))
简单解释下:
ROW(1:3)会生成1、2、3这三个基础行号,乘以myValueCell里的数值后,就得到了我们需要的目标行号——比如myValue是1时得到1、2、3;是2时得到2、4、6,刚好匹配需求。- 再用
INDEX把这些行号映射到B列,最后用AVERAGE计算平均值就搞定了。
要是你担心myValueCell里输入了1和2之外的数值,也可以加个判断逻辑避免出错,比如:
=IF(OR(myValueCell=1, myValueCell=2), AVERAGE(INDEX(B:B, SEQUENCE(3,1,myValueCell,myValueCell))), "无效值")
这样当myValue不是1或2时,单元格会显示“无效值”,不会出现错误计算。
备注:内容来源于stack exchange,提问作者BMac3




