如何将计算滑动标准差再取中位数的两步操作合并为单个Excel公式?
Excel直接计算滑动子数组标准差的中位数(无需中间步骤)
完全可以跳过中间步骤,直接在C20单元格写入公式完成计算,且公式能自适应更大数据集。以下分Excel版本给出方案:
Excel 365/2021及以上版本(支持动态数组)
使用MEDIAN+MAP+INDEX的组合公式,非易失性且适配性强:
=MEDIAN(MAP(SEQUENCE(COUNTA(A:A)-5+1),LAMBDA(x,STDEV.S(INDEX(A:A,x):INDEX(A:A,x+4)))))
公式说明:
COUNTA(A:A)统计A列实际有数据的行数(若A列无空行,也可替换为ROWS(A:A));COUNTA(A:A)-5+1自动计算滑动子数组的总个数,适配任意长度的数据集。MAP+SEQUENCE遍历每个子数组的起始位置x,通过INDEX精准定位从x开始的5个连续单元格(子数组)。STDEV.S计算样本标准差,若需总体标准差,替换为STDEV.P即可。- 外层
MEDIAN直接计算所有子数组标准差的中位数。
旧版Excel(无动态数组支持)
需使用数组公式(输入完成后按Ctrl+Shift+Enter确认):
=MEDIAN(IF(ROW(INDIRECT("1:"&COUNTA(A:A)-5+1))>0,STDEV.S(OFFSET(A1,ROW(INDIRECT("1:"&COUNTA(A:A)-5+1))-1,0,5,1))))
公式说明:
ROW(INDIRECT("1:"&COUNTA(A:A)-5+1))生成子数组起始位置的序列,自动适配数据集长度。OFFSET(A1,行偏移,0,5,1)取出对应滑动子数组,行偏移为起始位置减1。IF过滤无效值,STDEV.S计算标准差,最后MEDIAN取中位数。
通用调整技巧
如果需要修改滑动子数组的长度(比如从5改成7),只需:
- 将公式中的
5替换为目标长度 - 将
x+4(即x+5-1)替换为x+目标长度-1(旧版公式中OFFSET的5也同步替换)
内容的提问来源于stack exchange,提问作者Řídící
相关产品推荐
相关产品推荐

