按特定日期时间关联值的平均列

时间:2016-10-01 00:23:22

标签: excel datetime if-statement excel-formula average

我有一列的格式为“dd / mm / yyyy hh:mm”,另一列的格式为该时间点的温度。我想分别计算每个月的白天和晚上的平均温度。即平均所有温度在5月的06:00至18:00之间,所有温度在5月的18:00至06:00之间,然后是3月的相同,依此类推。

    Time    Celsius(C)
06/05/2016 10:49    28
06/05/2016 11:49    29
06/05/2016 12:49    31
06/05/2016 13:49    27.5
06/05/2016 14:49    24
06/05/2016 15:49    25
06/05/2016 16:49    24.5
06/05/2016 17:49    23.5
06/05/2016 18:49    23
06/05/2016 19:49    22.5
06/05/2016 20:49    22.5

我目前正在使用以下公式:

=AVERAGEIFS(C2:C3643,B2:B3643,">=01/05/2016",B2:B3643,"<=31/05/2016",B2:B3643,">=01/05/2016 06:00",B2:B3643,"<=31/05/2016 18:00")

如果日期在5月份和白天期间尝试计算平均值 - 但它似乎不起作用,当我更改小时数时,它仍会吐出相同的数字(这是平均值)月)。

3 个答案:

答案 0 :(得分:1)

您可以使用长SUMPRODUCT公式:

五月份的600至1800:

=SUMPRODUCT(($A$2:$A$12>=DATE(2016,5,1))*($A$2:$A$12<=DATE(2016,5,31))*(MOD($A$2:$A$12,1)>=TIME(6,0,0))*(MOD($A$2:$A$12,1)<=TIME(18,0,0))*B2:B12)/SUMPRODUCT(($A$2:$A$12>=DATE(2016,5,1))*($A$2:$A$12<=DATE(2016,5,31))*(MOD($A$2:$A$12,1)>=TIME(6,0,0))*(MOD($A$2:$A$12,1)<=TIME(18,0,0)))

您始终可以使用单元格引用替换所有DATE()和TIME()部分,而不是对其进行硬编码。

enter image description here

要获得介于1800和600之间的距离,我们需要在时间布尔值而不是OR之间将其转换为+ *

=SUMPRODUCT(($A$2:$A$12>=DATE(2016,5,1))*($A$2:$A$12<=DATE(2016,5,31))*((MOD($A$2:$A$12,1)<=TIME(6,0,0))+(MOD($A$2:$A$12,1)>=TIME(18,0,0)))*B2:B12)/SUMPRODUCT(($A$2:$A$12>=DATE(2016,5,1))*($A$2:$A$12<=DATE(2016,5,31))*((MOD($A$2:$A$12,1)<=TIME(6,0,0))+(MOD($A$2:$A$12,1)>=TIME(18,0,0))))

enter image description here

答案 1 :(得分:0)

这取决于您创建一个包含月份和时间范围的表格,如下所示:

enter image description here

在E2中输入此公式并根据需要拖动。它是一个数组公式,因此必须使用 Ctrl - Shift - 输入输入:

=AVERAGE(IF(
 ((MONTH($A$2:$A$101)=MONTH(E$1&1))*
 ((MOD(HOUR($A$2:$A$101)-LEFT($D2,2),24))>=0)*
 ((MOD(HOUR($A$2:$A$101)-LEFT($D2,2),24))<12)),
$B$2:$B$101))

注意:

  • MONTH(E$1&1)部分可让您从文字中获取月份编号 &#34;扬&#34;
  • 我使用MOD和减去时间范围的左边部分得到 目标小时的范围是0到23.这使得可以过滤1到11之间的值。
  • 如果Barry Houdini仍然存在,他可以在一半的空间内完成,我确定。

答案 2 :(得分:0)

在使用datetime时,当实际的一天被计算在午夜之后,如第二天的18小时到6小时,我发现将时间偏移并进行计算是有用的。

6:00至18:00 =平均(如果((月($ A $ 2:$ A $ 12-0.25)= D2)*(MOD($ A $ 2:$ A $ 12-0.25,1)&lt; 0.5 ),$ B $ 2:$ B $ 12&#34;&#34))

18:00至6:00 =平均(如((月($ A $ 2:$ A $ 12-0.25)= D2)*(MOD($ A $ 2:$ A $ 12-0.25,1)&gt; = 0.5),$ B $ 2:$ B $ 12&#34;&#34))

这些是使用Ctrl-Shift-Enter输入的数组公式。

这里我将时间偏移0.25天,即6小时。

enter image description here