Excel:计算过去 24 小时内先前行的总数

Excel: Calculate total for prior rows from last 24 hours

我有一个包含 日期、时间、值 列的 3 列工作表。我需要为所有 Value 的每一行计算总计 运行 的第四列,其中 Date+Time 在过去 24 小时内。读数的数量在 24 小时内变化,从每秒一次到每隔几分钟一次。

A SELECT 看起来像:

select 
    ot.dt
    , ot.tm
    , ot.value
    , sum(it.value) 
from 
    readings ot
        inner join readings it
            on addtime(ot.dt,ot.tm) >= addtime(it.dt,it.tm)    
            and convert(timediff(addtime(ot.dt, ot.tm), addtime(it.dt, it.tm)), decimal) < 240000               
group by
    ot.dt
    , ot.tm
    , ot.value

下面的屏幕截图给出了结果输出的外观。与实际要求不同的是,这里每隔一个小时提供一个读数,第四列(SumPast3Hours)只求和当前的Value和前两个.事实上。要求和的行数会有所不同。

不使用您的测试数据似乎忘恩负义,但我想回答最初的问题并考虑不同日期会发生什么。 我可以想到两种可能的方法:

(1) 使用sumifs,一种用于当天的读数,一种用于前一天的读数

=SUMIFS(C:C2,A:A2,A2)+SUMIFS(C:C2,A:A2,A2-1,B:B2,">="&B2)

(2) 使用sum(或sumproduct)

=SUM(C2:C*((A2:A+B2:B)>=(A2+B2-1)))

这取决于日期是连续的整数,而小时是分数(1 小时 = 一天的 1/24)

您可能希望将 >= 更改为 > 以排除正好比当前读数早 24 小时的读数。