Excel 如何求元素第n次发生的位置

Excel 如何求元素第n次发生的位置,excel,Excel,在excel中,我有两列,如下所示: A B apple fruit beef meat banana fruit orange fruit bacon meat 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) 然后,我想访问A列中

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

A        B
apple    fruit
beef     meat
banana   fruit
orange   fruit
bacon    meat
  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)
然后,我想访问A列中与元素B相对应的所有元素,即,我有一个C列,其中应包含以下元素:

C
apple
banana
orange
i、 e.C列中的第一个元素是A列中的第一个元素,B列中的元素是“水果”。 C列中的第二个元素是A列中的第二个元素,B列中的元素是“水果”

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

我希望至少能找到B列中某个元素的第n次出现,公式如下

=find("fruit";b1:b5;1)
对于第一个元素和

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

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

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

A        B
apple    fruit
beef     meat
banana   fruit
orange   fruit
bacon    meat
  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列用于标识您在D1中输入的B列。 E col用于建立“第一、第二……等”相关项目的列表。 F col只是一个固定数字列表-这是我们想要从E压缩的项目。 G列与E上的F相匹配,即实际的行数是多少。
H列使用偏移量来提取值。

以下是我认为您需要的

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

在牢房里,我输入了E1

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

=MATCH($E$1,$B$1:$B$5,0)
=MATCH($E$1,OFFSET($B$1:$B$5,F1,0),0)+F1
=INDEX($A$1:$A$5,F1)
这将获取第一个水果实例列表中的位置。 然后,在F2单元中,我输入

=MATCH($E$1,$B$1:$B$5,0)
=MATCH($E$1,OFFSET($B$1:$B$5,F1,0),0)+F1
=INDEX($A$1:$A$5,F1)
这将获取偏移列表中第一个水果实例在列表中的位置,并添加第一个项目的位置以获取第二个项目的位置,依此类推。这个公式可以复制到需要的地方。然后在G1,我进入

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

这也可以按需要进行填充

您可以在
C1

=IFERROR(索引(A$1:A$5,小)(如果(B$1:B$5=“水果”,行(A$1:A$5)-行(A$1)+1),行(C$1:C1)),“”)


按CTRL+SHIFT+ENTER键确认并向下复制-当限定值用完时,您会得到空白

FYI如果需要,可以将其中一些公式组合起来使用较少的列-我将它们分开以便于理解;)非常好,我本想沿着数组公式的路线走,但开始把自己弄糊涂了!这是光滑的,但是,它似乎只拉第一个项目?它如何拉动“第n个”项?即第二项:香蕉,或第三项:橙色?(我把OP理解为需要第n项;))C1中的公式得到第一项。当您向下复制行时,函数的增量从1到2到3,等等。公式行函数中的k值在小函数中给出,因此得到条件匹配的每个连续行号