如何find一个元素的第n次出现的位置

在Excel中,我有两列,说:

AB apple fruit beef meat banana fruit orange fruit bacon meat 

然后我想要访问列A中与元素B相对应的所有元素,即我有一列C,它应该包含以下元素:

 C apple banana orange 

即列C中的第一个元素是列A中的第一个元素,列B中的元素是“水果”。 列C中的第二个元素是列A中的第二个元素,列B中的元素是“水果”。

我已经看了一些公式,但他们似乎都没有能够解决这个问题。

我期望至less能find列B中某些元素的第n次出现,就像是一个公式

 =find("fruit";b1:b5;1) 

为第一个元素和

 =find("fruit";b1:b5;2) 

为第二个元素。 但是find已经在不同的上下文中使用了。

以更简单的公式逐步构build,我做了以下工作:

  D1="fruit" D2=IF($D$1=B2,1,0) E1=0 E2=D2+E1 F2=1 F3=2 F4=3 ... etc. G2=MATCH(F2,E:E,0)-1 H2=OFFSET($A$1,G2,0,1,1) 

D col用于标识您在D1中input的B col。 E col用于build立“1st,2nd,..等等”相关项目的列表。 F col只是一个固定的数字列表 – 这是我们要从E压缩的项目。 G col是E.上的F的MATCH。Ie实际的Row数是什么。 H col使用OFFSET来拉取值。

你可以在C1使用这个数组公式

=IFERROR(INDEX(A$1:A$5,SMALL(IF(B$1:B$5="Fruit",ROW(A$1:A$5)-ROW(A$1)+1),ROWS(C$1:C1))),"")

CTRL + SHIFT + ENTER确认,然后复制 – 当符合条件的数值用完时,你会得到空白

这是我想你想要的…

在范围A1:B5中,我复制了你的表格

在单元格中,我input了E1

 fruit 

(这是你将用来确定你想要的项目列表),然后,在单元格F1中,我input了

 =MATCH($E$1,$B$1:$B$5,0) 

这在果实的FIRST实例列表中获得了位置。 然后,在F2单元格中,我进入了

 =MATCH($E$1,OFFSET($B$1:$B$5,F1,0),0)+F1 

这将获得OFFSET列表中FIRST实例列表中的位置,并添加第一个项目的位置以获取第二个位置等等。 这个公式可以被复制下来,只要它需要去。 然后在G1,我进入了

 =INDEX($A$1:$A$5,F1) 

这也可以填补,只要它需要去