避免INDIRECT()

时间:2016-09-07 20:29:37

标签: excel

我在第3行中有数据,如:

enter image description here

我希望找到单词 Pass 的前两次出现。

第一次发生很容易;在 C6 我输入:

=MATCH("Pass",3:3,0)

它正确地产生3 (列 C 。为了获得第二次出现的位置,我想使用MATCH()从第一次出现的右边开始一列,即 D3:IV3 ,但是基于我已经拥有的结果 C6 我知道我可以通过以下方式获得 D

=SUBSTITUTE((LEFT(ADDRESS(1,C6+1),3)),"$","")

所以我正在使用:

=MATCH("Pass",INDIRECT(SUBSTITUTE((LEFT(ADDRESS(1,C6+1),3)),"$","") & "3:IV3"),0)+C6

这有效:

enter image description here

但我无法相信这个极其丑陋的公式是找到第二次出现的最好方法。有什么建议??

1 个答案:

答案 0 :(得分:4)

使用AGGREGATE作为SMALL(IF())获取带Pass的第二列:

=AGGREGATE(15,6,COLUMN(A:Z)/(A3:Z3="Pass"),2)

2出现的地方。

enter image description here

我知道你有多喜欢数组公式,所以既然你已经知道了第一个你可以用这个公式找到第二个:

=MATCH("Pass",INDEX(3:3,D5+1):INDEX(3:3,15000),0)+D5

![enter image description here