2016-01-02 53 views
1

我有上個月每天每小時的數據列表。 我想平均每個特定小時的整個月的數據。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 

我需要做的是一天的每一個小時,我想到了兩個階段做: 首先,提取的同一時間所有的值,然後做平均。

有什麼建議嗎? 謝謝

+0

你也可以很容易地得到一個數據透視表相同的結果 –

回答

2

我想有一個輔助列僅由日期時間值計算的時間。所以我們可以使用AVERAGEIF

需要ROUND避免浮點精度問題。

實施例:

enter image description here

公式:

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))} 

爲數組公式。

但是,如果用在很多單細胞中,這將會表現不佳。

第二種方法:

如果只小時須匹配,而不是整個時間,從datetime值僅獲取小時A列助手列D

公式:

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))} 

作爲陣列式。

+0

我不知道爲什麼,但我越來越#DIV/0錯誤在某些時間:( – Oo7

+0

例如請。也許時間不完全匹配。嘗試少於10位數的「ROUND」,或者如果只有小時匹配,則嘗試第二種方法。 –

+0

哦,當然,如果您嘗試計算某個時間的值的平均值,則會得到'#DIV/0!在'A'列中不存在,那麼沒有計算平均值的值,沒有值的平均值是多少? –

0

如果用公式來做,你是對的,我不認爲你可以直接使用AVERAGEIFS(除非你設置了一個輔助列,並且其中包含小時),所以需要做類似的事情這個: -

=SUM(B$2:B$5*(HOUR($A$2:$A$5)=$E2))/SUM(--(HOUR($A$2:$A$5)=$E2)) 

我假設E2包含您要選擇的小時,並且您的數據位於前三列。

這是一個陣列式,並且必須以Ctrl鍵移位輸入輸入

enter image description here

相關問題