在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
已在不同的背景下使用。
答案 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)
这也可以根据需要填写