我有 300 家工厂 10 年的月度数据。虽然 Excel 可以计算不同时间段的移动平均值,但我希望计算此数据集的移动中值。
我显然可以通过蛮力找出公式,但我所寻找的是使用可以根据另一个单元格的结果进行修改的公式的能力。
如果我计算 10 年数据的 4 个季度移动中位数的公式为 =median(c3:c951),那么下一个期间将是 =median(c952:c1900) 等等。
我似乎不应该重写单元格中的每个公式,而应该引用一串数字或结果来替换公式中的实际数字。
我觉得很多年前我就见过这种做法,但当然不记得是怎么做的了。
答案1
据我所知,您使用的是每 (n = 948) 行?应该是这样的 -
=MEDIAN(INDIRECT("C"&(ROW()-1)*948+ROW(C2)+1&":C"&ROW()*948+ROW(C3)))
所以如果你把它放在 E1 中,结果将是
=MEDIAN($C$3:$C$951)
拖到 E2,它会返回
=MEDIAN($c$952:$c$1900)
ETC
为了避免,INDIRECT
你可以使用类似 -
=MEDIAN(OFFSET(C$3,ROWS(E$1:E1)*948-948,0,948))
要使用日历年并考虑闰年 -我不知道。
答案2
使用 OFFSET 函数。您可以在那里进行偏移计算。也许可以与 ROW 函数结合使用。
如果数据在 A 列,且中位数 标签(例如:2010、2011 等)在 F 列中,尝试类似以下操作:
=MEDIAN( OFFSET( $A$1; 365* ROW( F1 ); 0; 365; 1) )
然后复制粘贴下来。
这将计算每 365 个数据项的中位数。根据需要调整单元格引用和魔法数字。