我有一个数据集,其中B列的开始时间和C列的结束时间。我目前正在使用sumproduct公式(=SUMPRODUCT(($B2<"07:00")*($C2>="07:59")))
来确定start/end
时间是否在时间范围内{{1 }}。在sumproduct公式中,时间只是例子(我将用数字格式填写时间)。
之前我已经看过sumproduct并且经过了测试和测试,但是我还没有找到一个完成所有这些操作的公式,如果开始时间是午夜之前但是结束时间是午夜之后的话。
数据集用于从开始到结束运行的事件,我最终希望通过在任何给定时间间隔内运行事件时放置0/1来确定事件运行的时间范围。
我对日期的唯一解决方法是应用sumproduct公式,然后对跨越午夜的事件进行过滤并相应地调整公式。
对此的任何帮助将不胜感激。提前感谢您的时间。
答案 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}}。
对于跨越午夜的仅限时间段,您可以测试该值是在开始之后还是在结束之前落下。
这是一个完整的公式。 1}},>
和[start]
视需要替换。
[end]