Excel索引匹配查找date,时间间隔返回错误的值

我有一个工作表,2个独立的数据文件加载到2张。 “EventTime”工作表包含发生特定事件的date和事件时间。

“间隔”工作表包含date(独立于“事件时间”中的date),时间开始(这是单个时间间隔的开始)和时间结束(时间开始+ 30分钟)。 我将时间开始和时间汇总到TIME INTERVAL列。

我的目标是确定“EventTime”中的Event Time值是否落入“EventTime”和“Interval”中相同date的“Interval”中的任何特定TIME INTERVAL之间。 时间起始值不能小于“事件时间”中的事件时间

我已经尝试了几个索引匹配函数:

=INDEX(Interval!$D$2:$D$5322,MATCH(1,IF(EventTime!B2>=LEFT(Interval!$D$2:$D$5322,5)+0,IF(EventTime!B2<RIGHT(Interval!$D$2:$D$5322,5)+0,1),0),0)) 

这将事件时间映射到时间间隔,这是一个相当大的违规。 它会查找满足条件的第一个时间间隔,而不考虑date。 所以发生什么事情看起来像时间匹配很好,但如果你看看

16:28的值在16:14 – 16:44之间,但这违反了“间隔”中的“时间开始”不能小于“时间”值的要求。

16:28的正确值应该是16:28 – 16:58

我尝试过的另一个方法是:

 =INDEX(Interval!$D$2:$D$5322,MATCH(EventTime!B2,LEFT(Interval!$D$2:$D$5322,5)+0)) 

这似乎是看事件时间的分钟部分,并将其与时间下的分钟的第一个时间间隔进行比较,如何在地球上挑选分钟已经让我难倒,似乎在以后的时间返回正确的值虽然这段时间很奇怪

方法3:

 =INDEX(Interval!$D$2:$D$5322,MATCH(1,(EventTime!A2=Interval!$A$2:$A$5322)*(EventTime!B2<=LEFT(Interval!$D$2:$D$5322,5)+0)*(EventTime!B2>RIGHT(Interval!$D$2:$D$5322,5)+0))) 

我已经在这里使用了Date作为要求,但是现在这只是匹配1个时间间隔。

方法4:

 =INDEX(Interval!$D$2:$D$5322,MATCH(1,IF(A2=Interval!$A$2:$A$5322,IF(EventTime!B2>=LEFT(Interval!$D$2:$D$5322,5)+0,IF(EventTime!B2<RIGHT(Interval!$D$2:$D$5322,5)+0,1),0),0))) 

类似第一种方法,我已经尝试,但添加date要求,给出相同的1时间间隔输出。

所有这些公式都是通过Control + Shift + Enterinput的。

我一直坚持这几天,它开始让我疯了,我认为我走在正确的轨道上,但我错过了一些真正简单的事情。

file upload到这里

http://www.filedropper.com/example_1

所以,呃。 这很复杂,但我有一个解决scheme,你可能会效仿 – 然后用来进一步解决你的问题。

我做了一件事情,这可能会使解决scheme不适用于你的情况。 我把date和时间放在一起。 根据我的理解,你可以做到这一点,然后创buildstring,但我不知道你在用什么,所以我可能是错的。 此外,假设间隔是固定的(30分钟)

这是我的公式(请记住,我已经添加了date的时间)

 =SUMPRODUCT(MAX((Interval!B:B)*(Interval!B:B-EventTime!B3-1/48<0))) 

这将返回适合该事件的时间间隔的“最后”可行的date和时间。 不要被“-1/48”丢掉 – 这是在excel中写半个小时最简单的方法。 这实际上是最晚的间隔时间,比事件晚了不到半个小时。

这产生了

  Target event Interval start 01.11.2015 23:34 01.11.2015 23:23 01.11.2015 22:50 01.11.2015 22:41 01.11.2015 22:48 01.11.2015 22:41 01.11.2015 22:11 01.11.2015 22:00 01.11.2015 22:05 01.11.2015 22:00 01.11.2015 22:07 01.11.2015 22:00 01.11.2015 21:28 01.11.2015 21:28 01.11.2015 21:23 01.11.2015 21:13 

我已经设法解决这个代码的问题,它基本上得到了第一个匹配的间隔时间(使用ROW($ Y $ 1)的特定事件时间基于date和城市(城市代码不包括在这里,因为我只使用date和时间要求)。

 =IFERROR(INDEX(Interval!$D$2:$D$5322,SMALL(IF((EventTime!A2=Interval!$A$2:$A$5322)*(EventTime!B2>=LEFT(Interval!$D$2:$D$5322,5)+0)*(EventTime!B2<RIGHT(Interval!$D$2:$D$5322,5)+0),ROW(Interval!$D$2:$D$5322)-MIN(ROW(Interval!$D$2:$D$5322))+1,""),ROW($Y$1)))," ") 

这对我的主要问题起作用,除了有2个事件时间彼此非常接近,但映射到不同的时间间隔(轶事例子,事件时间14:14和14:43,14:14将映射到14:14 – 14:44和14:43将映射到14:30 – 15:00)。 这很好,因为这仍然符合我们的目的,但我可能会使用一些VBA或R来缩短间隔映射的事件时间。