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

在这里输入图像说明