Excel – 如果在某个小时内复制数据
我有上个月每天每小时的数据清单。 我想平均每个特定小时的整个月份的数据。
例如:
Time Data Data 2 17/12/2015 14:00:00 15 30 17/12/2015 15:00:00 30 40 18/12/2015 14:00:00 20 15 21/12/2015 15:00:00 31 41
我想提取所有的14:00和15:00的值,并取其平均值。
Time AverageData AverageData 2 14:00 17.5 22.5 15:00 30.5 40.5
我需要在一天中的每个小时都这样做,我想分两个阶段来做:首先,提取同一小时的所有值,然后做平均值。
有什么build议么? 谢谢
我将有一个帮助专栏只从date时间值计算时间。 所以我们可以使用AVERAGEIF
。
ROUND
是需要避免浮点精度的问题。
例:
公式:
D2
向下:
=ROUND(A2-INT(A2),10)
G2
向下并向左:
=AVERAGEIF($D:$D,ROUND($F2,10),B:B)
如果没有帮手列,你可以在G2
向下使用:
{=AVERAGE(IF(ROUND($A$2:$A$100-INT($A$2:$A$100),10)=ROUND($F2,10),B$2:B$100))}
作为数组公式。
但是,如果用在很多单细胞中,这将是一个糟糕的performance。
第二种方法:
如果只有小时匹配,而不是整个时间,则只能得到助手列D
中列A
的date时间值中的小时:
公式:
D2
向下:
=HOUR(A2)
G2
向下并向左:
=AVERAGEIF($D:$D,HOUR($F2),B:B)
如果没有帮手列,你可以在G2
向下使用:
{=AVERAGE(IF(HOUR($A$2:$A$100)=HOUR($F2),B$2:B$100))}
作为数组公式。
如果按照公式来做,你是对的,我不认为你可以直接用AVERAGEIFS来做(除非你设置了一个有小时数的帮手列),所以需要做这样的事情:
=SUM(B$2:B$5*(HOUR($A$2:$A$5)=$E2))/SUM(--(HOUR($A$2:$A$5)=$E2))
我假设E2包含您想要select的小时,并且您的数据位于前三列。
这是一个数组公式,并且必须使用Ctrl Shift Enter进行input