所以我的第一列有不同时间戳的日期。对于第二列,我有数据。设第一列为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
答案 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/2015
和1/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)。通过巧妙地使用SUMPRODUCT
或INDEX
,有很多方法可以在没有数组公式的情况下完成最后一部分。