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 小时的读数。
我有一个包含 日期、时间、值 列的 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 小时的读数。