如何找到元素第n次出现的位置

时间:2015-03-12 15:29:00

标签: excel

在excel中我有两列,如下所示:

A        B
apple    fruit
beef     meat
banana   fruit
orange   fruit
bacon    meat

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

C
apple
banana
orange

即。 C列中的第一个元素是A列中的第一个元素,B列中的元素是" fruit"。 C列中的第二个元素是A列中的 second 片段,B列中的元素为" fruit"。

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

我期望至少在B列中找到某个元素的第n个出现位置,其公式如

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

表示第一个元素和

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

表示第二个元素。但find已在不同的背景下使用。

3 个答案:

答案 0 :(得分:1)

在更简单的公式中逐步构建它,我做了以下内容:

  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中输入的B col。 E col用于构建相关的“1st,2nd,.. etc”项目列表。 F col只是一个固定数字列表 - 这是我们希望从E中压缩的项目。 G col是E上的F匹配。即它是什么实际行号。 H col使用OFFSET来提取值。

答案 1 :(得分:1)

您可以在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 确认并复制 - 当符合条件的值用完时你会得到空白

答案 2 :(得分:0)

这就是我想你想要的......

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

在单元格中,E1 I键入

fruit

(这是您将用于确定所需项目列表的内容) 然后,在单元格F1中,我进入了

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

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

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

这将获取OFFSET列表中第一个水果实例列表中的位置,并添加第一个项目的位置以获取第二个项目的位置,依此类推。然后可以根据需要将该公式向下复制。然后在G1中,我进入了

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

这也可以根据需要填写