在Excel中查找与INDEX的对应关系

时间:2017-05-04 18:55:39

标签: excel excel-formula

我正在制作一张Excel表格,我必须按照一些标准拾取所有比赛。

这是一个例子:

a   b   r   abr
a   c   m   acm
a   c   r   acr
a   d   m   adm
a   e   m   aem
a   e   r   aer
a   f   r   afr
a   f   m   afm
a   d   r   adr
a   b   m   abm

enter image description here

因此,它必须返回每个代码" r"或" m'在末尾。由于我可能会插入新代码,因此必须非常动态。我目前正在使用这个公式

={IFERROR(INDEX($A$1:$D$10;SMALL(IF($C$1:$C$10="r";ROW($A$1:$A$10));ROW(A1));4);IFERROR(INDEX($A$1:$D$10;SMALL(IF($C$1:$C$10="m";ROW($A$1:$A$10));ROW(A1));4);""))}

它返回带有" r"的代码,这是我公式中的第一个,但不适用于" m"。似乎问题与如何返回矩阵的第k个值有关,即使我改变了表的顺序。

任何想法?

提前致谢

1 个答案:

答案 0 :(得分:1)

我更喜欢AGGREGATE和INDEX而不是SMALL:

=IFERROR(INDEX($D$1:$D$10;AGGREGATE(15;6;ROW($C$1:$C$10)/(($C$1:$C$10="r")+($C$1:$C$10="m"));ROW(1:1)));"")

如果你想使用SMALL的数组形式:

=IFERROR(INDEX($D$1:$D$10;SMALL(IF(($C$1:$C$10="r")+($C$1:$C$10="m");ROW($C$1:$C$10));ROW(1:1))),"")

=IFERROR(INDEX($D$1:$D$10;SMALL(IF(($C$1:$C$10="r");ROW($C$1:$C$10);IF(($C$1:$C$10="m");ROW($C$1:$C$10)));ROW(1:1)));"")

请记住,需要使用Ctrl-Shift-Enter确认小公式版本。