Excel - 放置在特定时间范围内的值

时间:2018-06-11 06:33:11

标签: excel excel-vba excel-formula vba

我有关于特定服务的持续时间的以下数据。

     A                          B                C                      D
Usage Start (Local time)    Start Time  Usage Until (Local time)    End Time
03.03.2018 10:00           12:00:00 AM     03.03.2018 00:00      1:00:00 AM
03.03.2018 00:00            1:00:00 AM     03.03.2018 00:00      2:00:00 AM
03.03.2018 16:30            1:00:00 AM     03.03.2018 00:00      3:00:00 AM

我想计算时间在一定范围内的次数(例如00:00 - 01:00)

     Start  End  Counts
     00:00  01:00   1
     01:00  02:00   2
     02:00  03:00   1
     03:00  04:00   
     04:00  05:00   
     05:00  06:00   

我应该使用什么配方以及如何应用它?

我试过这个

=COUNTIFS($B$2:$B$566,">="&A2,$D$2:$D$566,"<"&B2)

这个

=SUMPRODUCT(($B$2:$B$566>= A2)*($D$2:$D$566< B2))

但它不超过24小时(Eg.3 / 3/20188 1:00 PM - 4/3/2018 2:00 PM,25小时)

2 个答案:

答案 0 :(得分:0)

比我想象的要复杂一点,但我让它发挥作用。

  

虽然在我们开始之前,您需要稍微格式化一下表格。 您   不能在同一个单元格中有日期和时间(因为excel有问题   识别在1个单元格中存储两种格式。)   而是格式化您的表格   像这样:

enter image description here

接下来我们应该创建一些隐藏的行(从技术上讲,你可以坚持我在1个巨型公式中要做的事情,但为了清楚起见,我更喜欢隐藏的行)

首先,我们关注以小时为单位的时差。创建以下两列

  

另外,请确保在这些新添加的行中设置格式   数。从技术上讲,它可以在没有它的情况下工作,但它会看起来   困惑于人眼

enter image description here

时间干扰中,我们使用以下公式 =ABS(F2-C2) * 24

一夜之间列中: =IF(C2>F2, 24-G2, G2)利用我们适当计算过渡日期(例如23:00 1/1/18 - > 01:00 2/1/18),我们不想添加额外的24在这种情况下,小时数。

  

那将是充分工作的时间,但我们也需要确保   公式有效,当有一个以上的差异时(例如   1/1/18 - &gt; 18年3月1日)

接下来,我们添加这两行

enter image description here

日期差异列中,如列名所示 =DATEDIF(A2, D2, "d") * 24

最后但并非最不重要的是,隔夜增量基本上与隔夜h相同,但使用日期而非数小时

现在,如果我们隐藏了行,将以下公式添加到结果=H2+I2-J2,我们就会得到我们追捧的表:

enter image description here

这与预期结果相符! :)

编辑:如果您不想花费数小时进行通知,并且只计算24小时间隔到期的次数,请使用以下公式

=IF(C2>F2, DATEDIF(A2, D2, "d")-1, DATEDIF(A2, D2, "d"))

(在推定c2下,f2,a2,d2在我提供的原始表中的列中)

enter image description here

答案 1 :(得分:0)

您似乎忽略了列AC中的时间部分。假设您的开始/结束时刻箱位于FG列中,下面的公式将为您提供事件通过第一个小时箱的次数(您必须将其作为数组输入)式 - CTRL + + 输入)。填写后续的小时箱。

=SUM(($B$2:$B$4<F2+TIME(0,30,0))+($D$2:$D$4>F2+TIME(0,30,0))+INT($C$2:$C$4)-INT($A$2:$A$4)-1)

如果事件在半小时标记处有效,这将计算一小时箱中的事件。

如果事件需要覆盖整个时间段,请使用此公式(再次使用 ctrl + shift + 输入):

=SUM(($B$2:$B$4<=F2)+IF(G2>F2,($D$2:$D$4>=G2))+INT($C$2:$C$4)-INT($A$2:$A$4)-1)