我正在处理一个大型数据集。这是前几行的图片。
大约每 50 行,循环数就会增加 1。但是,用于数据采集的程序有时会错过收集,最终导致每循环 49 个点而不是每循环 50 个点。
我想要做的是计算每个单独周期每列数据的平均数,但我需要以某种方式解释每个周期点数的变化。
我一直在使用:
AVERAGE(OFFSET($A$2,(ROW()-2)*50,0,50,1))
但是当每个循环中的行数发生变化时,我无法弄清楚如何使其动态化。
答案1
如果您有 Office 365 或 Office 2019,则可以使用 AverageIf()。
=AVERAGEIF($A$2:$A$10,A2,$B$2:$B$10)
在没有此功能的早期版本的Excel中,您可以使用这种方法:
=AVERAGE(INDEX($B$2:$B$10,MATCH(A2,$A$2:$A$10,0)):INDEX($B$2:$B$10,MATCH(A2,$A$2:$A$10,1)))
屏幕截图显示了这两个公式的实际作用。
编辑:如果您希望平均值仅显示在具有新循环编号的行上,请将整个公式放在 IF 语句中,例如
=if(A2<>A1,AVERAGE(INDEX($B$2:$B$10,MATCH(A2,$A$2:$A$10,0)):INDEX($B$2:$B$10,MATCH(A2,$A$2:$A$10,1))),"")