每天获取 B 列的 30 分钟最大总和

Getting the 30 mins max sum of Column B per day

所以我在第一列中使用了不同时间戳的日期。对于第二列,我有数据。让第一列为 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

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

例如,假设您上面的数据在 A-C 列中。 (但我们忽略了 C 中的数据,并像您在示例中所做的那样关注 B 列。)在 $D 中,让我们输入您想要的间隔 0:30。在 E 列中,我们将跟踪 A 列中的每次 rain_value 最后 30 分钟 window 的总和。要计算这个,您可以将以下公式粘贴到 E2 中并向下复制该列(例如,如果您想要 > 而不是 >=,则进行调整):

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

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

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

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

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

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