求更简洁的Excel行数据10元素滑动平均数组公式
一行数据的10元素滑动平均简洁Excel数组公式
方案1:Excel 365 专属(最简洁)
如果使用支持动态数组和WINDOW函数的Excel 365版本,这个公式最为简洁:
=TOROW(AVERAGE(WINDOW(10,1,1:1,SEQUENCE(COUNT(1:1)-9,1,1))))
COUNT(1:1)统计目标行的有效数值总数SEQUENCE(...)生成所有滑动窗口的起始位置序列WINDOW(10,1,1:1,起始位置)精准提取每个10元素的连续窗口AVERAGE自动对每个窗口计算平均值TOROW将结果转换为一行数组输出
方案2:兼容多数Excel版本的简化公式
如果需要兼容不支持WINDOW函数的版本,可以使用简化的MMULT实现:
=TOROW(MMULT(--(SEQUENCE(COUNT(1:1)-9,1)<=SEQUENCE(1,COUNT(1:1)))*(SEQUENCE(COUNT(1:1)-9,1,10)>=SEQUENCE(1,COUNT(1:1))),1:1)/10)
- 通过两个
SEQUENCE生成的布尔矩阵标记每个窗口内的元素(1表示属于当前窗口,0表示不属于) MMULT计算每个窗口的元素总和,除以10得到平均值TOROW将结果转为一行数组
方案3:Excel 365 累加式实现
利用SCAN函数的累加特性,高效计算窗口总和:
=TOROW(DROP(SCAN(0,1:1,LAMBDA(acc,val,acc+val-IF(ROW(val)-ROW(INDEX(1:1,1))>=9,INDEX(1:1,ROW(val)-9),0))),9)/10)
SCAN逐个累加数值,同时减去9个位置前的旧值,实时维护当前窗口的总和DROP(...,9)剔除前9个未填满10元素的无效结果- 除以10得到平均值后用
TOROW转为一行数组
以上所有公式均可在单个单元格输入,Excel 365版本直接回车即可输出一行数组;旧版Excel需按Ctrl+Shift+Enter作为数组公式执行。
内容的提问来源于stack exchange,提问作者miillad
相关产品推荐
相关产品推荐

