开始/结束时间落在范围内(跨越午夜)

时间:2014-06-24 16:56:26

标签: excel time range

我有一个数据集,其中B列的开始时间和C列的结束时间。我目前正在使用sumproduct公式(=SUMPRODUCT(($B2<"07:00")*($C2>="07:59")))来确定start/end时间是否在时间范围内{{1 }}。在sumproduct公式中,时间只是例子(我将用数字格式填写时间)。

之前我已经看过sumproduct并且经过了测试和测试,但是我还没有找到一个完成所有这些操作的公式,如果开始时间是午夜之前但是结束时间是午夜之后的话。

数据集用于从开始到结束运行的事件,我最终希望通过在任何给定时间间隔内运行事件时放置0/1来确定事件运行的时间范围。

我对日期的唯一解决方法是应用sumproduct公式,然后对跨越午夜的事件进行过滤并相应地调整公式。

对此的任何帮助将不胜感激。提前感谢您的时间。

2 个答案:

答案 0 :(得分:1)

首先我不认为你需要sumproduct,因为你没有处理任何需要求和的范围,所以你可以将你的公式缩短到($B2>"07:00")*($C2<="07:59")。注意我也改变了标志,所以它实际上是在7:00-7:59之间,除非07:00和07:59存储在一个单元格中,否则该公式将不起作用,因为写入它是将数字与a进行比较文本字符串,不会返回正确的值。

对于您的实际问题,您需要第二部分功能

=if(end<start,(B2<end)+(B2>start),(B2>start)*(B2<=end))

如果结束时间少于开始时间,则假设它超过午夜,因此您的时间需要在开始时间之后或在结束时间之前。如果它不是午夜时分,它必须在它们之间。

答案 1 :(得分:0)

考虑使用半开间隔[Start,End),使您的范围为07:00至08:00,08:00至09:00等。

  • 这样做的好处是不会跳过像07:59:30这样的值。

  • 它还允许您进行简单的减法,在范围的持续时间内获得1小时而不是59分钟。

  • 使用<=>=(取决于您的表达方式)与范围的开头进行比较,但使用<或{与范围的结尾进行比较{1}}。

  • 对于跨越午夜的仅限时间段,您可以测试该值是在开始之后还是在结束之前落下。

这是一个完整的公式。 >和[start]视需要替换。

[end]