在列中查找第一个和最后一个值,然后获取其旁边的值

时间:2018-09-13 04:09:35

标签: excel vba excel-vba excel-formula

我有两列:列A 是数字的列表,而列B 时间。我需要在A列中找到第一个不是7(通常为0)的值,然后花一些时间在它旁边。

我尝试使用下面的方法,但一直不可用:

  

= INDEX(H:H,MATCH(“ 0”,G:G,0)+0,0,0)

我还想找到最后一个不是7的值(可以是1、2、3、5或0),然后在右边花一些时间,但是我不确定该怎么做,也许是从下往上搜索? VBA会更容易吗?

在以下示例中,突出显示了正确的答案(对不起格式)。

7 | 0:00:30
7 | 0:01:00
7 | 0:01:30
0 | 0:02:00
0 | 0:02:30
0 | 0:03:00
0 | 0:03:30
0 | 0:04:00
2 | 0:04:30
2 | 0:05:00
1 | 0:05:30
2 | 0:06:00
2 | 0:06:30
7 | 0:07:00
7 | 0:07:30
7 | 0:08:00

谢谢!

1 个答案:

答案 0 :(得分:0)

您的第一个条件是一个简单的“找到第一行匹配条件”。

=INDEX(B:B, AGGREGATE(15, 7, ROW(A:A)/(A$1:A$16<>7), 1))

第二个需要考虑第一个位置。

=INDEX(B:B, AGGREGATE(15, 7, ROW(INDEX(A:A, AGGREGATE(15, 7, ROW(A:A)/(A$1:A$16<>7), 1)+1):A$16)/(INDEX(A:A, AGGREGATE(15, 7, ROW(A:A)/(A$1:A$16<>7), 1)+1):A$16=7), 1)-1)

对于您的样本数据,它也可以正常工作,但是在依靠它之前,我将对其他数据样本进行更多测试。特别是如果第二批7中有“不是7的数字”。

=INDEX(B:B, MATCH(6, A:A))

enter image description here