每天最多获得B列30分钟

时间:2015-03-18 07:30:33

标签: excel excel-formula

所以我的第一列有不同时间戳的日期。对于第二列,我有数据。设第一列为A,第二列为B.我需要得到数据的总和,即一天内持续30分钟内的最大总和。

例如,对于下面的数据,

dateTimeRead(YYYY-MM-DD HH-mm-ss)   rain_value(mm)  air_pressure(hPa)
1/2/2015 0:00                       0               941.5675
1/2/2015 0:15                       0               941.4625
1/2/2015 0:30                       0               941.3
1/2/2015 0:45                       0.1               941.2725
1/2/2015 1:00                       0.2             941.12
1/2/2015 1:15                       0.3               940.8625
1/2/2015 1:30                       0.6               940.7575
1/2/2015 1:45                       0.2               940.6075
1/2/2015 2:00                       0               940.545
1/2/2015 2:15                       0               940.27
1/2/2015 2:30                       0               940.2125
1/2/2015 16:15                      0               940.625
1/2/2015 16:30                      0               940.69
1/2/2015 16:45                      0               940.6175
1/2/2015 17:00                      0               940.635
1/2/2015 19:00                      0               941.9975
1/2/2015 20:45                      0               942.7925
1/2/2015 21:00                      0               942.745
1/2/2015 21:15                      0               942.6325
1/2/2015 21:30                      0               942.735
1/2/2015 21:45                      0               942.765
1/2/2015 22:00                      0               941.6
1/3/2015 2:15                        0.1              
1/3/2015 2:30                       0.2               941.1275
1/3/2015 2:45                       0.1               941.125
1/3/2015 3:00                       0.1             940.955
1/3/2015 3:15                       0               941.035

所需的输出将是

Date            Max Sum
1/2/2015      1.1
1/3/2015        0.4 
and so On

1 个答案:

答案 0 :(得分:0)

您可以通过跟踪辅助列中的30分钟间隔总和,然后使用数组公式计算每天的最大值来实现此目的。

例如,假设您上面的数据位于A-C列中。 (但是我们忽略了C中的数据,并像你在你的例子中那样关注B列。)在$D$1中,让我们把你想要的间隔0:30。在E栏中,我们将在A列中每次跟踪最后30分钟窗口rain_value的总和。要计算这一点,您可以在E2中粘贴以下公式并向下复制列(例如,如果您想要>而不是>=进行调整):

=SUMIFS(B:B,A:A,"<="&A2,A:A,">="&A2-$D$1)
// assumes the time interval is in $D$1

现在您有一列数据,其中包含您想要获取最大值的窗口。一种方法是使用MAX公式作为数组公式。首先,创建一个新列F,它只提取A列中日期时间的日期部分。例如,只需将=INT(A2)放在单元格F2中并向下复制即可。

然后,为您的日期创建一个列G(在您的示例中为1/2/20151/3/2015)。在H列中,在H2中计算以下数组公式*并向下复制以获得E列的最大值:

{=MAX(IF(F:F=G2,E:E))}

这将获得每个日期的最大值。

*如果您不知道如何执行数组公式,基本上只需将公式=MAX(IF(F:F=G2,E:E))键入H2,但不要输入Enter,而是在Windows上键入Ctrl-Shift-Enter(或Cmd-Enter on一台Mac)。通过巧妙地使用SUMPRODUCTINDEX,有很多方法可以在没有数组公式的情况下完成最后一部分。