根据Excel / VBA中的时间跨度,在匹配行前后返回多行

我有以下types的数据:

+---------------+-------------------------+---- | time | item | line index number +---------------+-------------------------+---- | 05:00:00 | | 1 | 05:00:01 | MatchingValue | 2 | 05:15:00 | | 3 | 06:00:00 | B | 4 | 06:01:00 | | 5 | 06:45:00 | | 6 | 07:00:00 | MatchingValue | 7 | 07:15:00 | | 8 | 08:00:00 | | 9 | 09:00:00 | | 10 +---------------+-------------------------+ 

我想要做的是提取多个行前后匹配的行与item == "MatchingValue" ,连同匹配的行本身。 那些返回多行是在15分钟的时间内的item == "MatchingValue"

例如,如果我在第二栏中search"MatchingValue" ,我想要得到第1,2,3和6,7,8行的结果。

我知道可以通过使用数组公式(例如Index和Match)同时返回第2,7行。 但我真的不知道如何使用数组公式为我自己的问题。

我感谢任何帮助。

最简单的方法是添加一个帮助列并过滤数据,或者只使用数据透视表来获取所需的数据。
公式在您的帮助列中: =or(b2="MatchingValue",countifs(b:b,MatchingValue,A:A,">=" & A2-1/(24*4),A:A,"<=" & A2+1/(24*4))>0)
当然,你也可以编写数组公式来将数据收集到一个新的范围,但考虑到你已经复杂的标准和可变数量的结果,这将是一个复杂的公式。