任务场景: 在采集数据时,有些时候可能会对同一个样本进行多次采样,就导致该样本的某个指标值对应多个采样值(每次采样值都会有些许偏差),所以快速将多个采样值求均值合并为一行数据是很重要的操作。如果是列求值,就将下列函数中的行列调换就行了
EXCEL公式:
例如从A1开始,每三行求一次平均值并合并
=AVERAGE(OFFSET($A$1,(ROW()-1)*3,0,3,1))
(1) OFFSET(reference, rows, cols, [height], [width]) : 返回基于指定单元格或区域的偏移量的单元格或区域
- reference(必需):作为起点的引用单元格或单元格范围。你希望从哪里开始偏移。
- rows(必需):向上或向下偏移的行数。正数表示向下偏移,负数表示向上偏移。 ( ROW()-n 是表示从第n行开始,*n 是指以n行为一个周期处理数据 )
- cols(必需):向左或向右偏移的列数。正数表示向右,负数表示向左。
- height(可选):返回范围的行数。默认为 1 行。
- width(可选):返回范围的列数。默认为 1 列。
(2) AVERAGE( ) : 对返回的数据求均值
需要注意的是,上述的公式在处理数据时有一个弊端,即该公式只能一列一列的处理数据,对于大量数据需要处理的任务还是很麻烦。
=AVERAGE(OFFSET( A$1,(ROW()-1)*3,0,3,1))
解决的办法也很简单,因为上一个公式在选定起始位置时把列也固定了,所以只需删掉列前面的 $ 符号,然后输入公式后选中单元格直接往左拉,列数就会自动加了,也就实现了对多列数据同时操作。
最后,如果还需要规定最终求得值的小数点精确度,可以再加上 ROUND ( ) 函数
=ROUND(AVERAGE(OFFSET( A$1,(ROW()-2)*3,0,3,1)), 2)
!但是上述的函数在操作方法上有个弊端
因为ROW()函数是会返回当前所在行数,所以上诉函数只能在那一行进行求值(例如1-3行的数据只能在第一行的位置进行输出),否则就会报错。
那如何在其余的位置进行输出呢
例如想要在第n行进行输出,然后原数据是从第m行开始求,就减去(n-m),总之就是让其从第m行开始捕获数据。
=AVERAGE(OFFSET(A$1,(ROW()-n)*3,0,3,1))