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

时间:2015-05-18 06:20:27

标签: excel vba excel-vba

我有以下类型的数据:

+---------------+-------------------------+----
| 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"在匹配行之前和之后提取多行,以及匹配的行本身。那些返回的多行是在item == "MatchingValue"

之后的15分钟内

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

我知道可以通过使用数组公式(例如索引和匹配)同时返回第2,7行。但我真的不知道如何使用数组公式来解决我自己的问题。

我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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