INDEX / MATCH只在具有多个条目的列中find第一个值

列A具有需要与列B匹配的值的列表。如果匹配,则应返回列C中的相邻值。 我正在使用INDEX / MATCH来执行此操作。 但是,如果列A具有重复的值,则INDEX / MATCH函数将返回列B中的第一个值,而不是在列B中查找的第二个或第三个值。是否可以find其他值(除第一个)在列B使用INDEX / MATCHfunction?

这是示例表格:

Column A Column B Column C lookup0x16e663000 lookup0x16e663000 1461178793193312 lookup0x16e663001 lookup0x16e663000 1461178793193508 lookup0x16e663000 lookup0x16e663001 1461178793193704 lookup0x16e663001 lookup0x16e663001 1461178793193891 lookup0x16e663000 lookup0x16e663005 1461178793194110 lookup0x16e663005 lookup0x16e663005 1461178793194312 lookup0x16e663005 lookup0x16e663000 1461178793194538 lookup0x16e663000 lookup0x16e663000 1461178793194760 

所以在这里,如果我从列A中查找第四个值,它将与列B的第三个值相匹配,而不是第四个值。

您可以使用AGGREGATE()函数代替MATCH:

 =INDEX($C$1:$C$8,AGGREGATE(15,6,ROW($A$1:$A$8)/($A$1:$A$8=B1),COUNTIF($B$1:$B1,B1))) 

AGGREGATE(15,6,…)模拟SMALL(IF())函数。 行ROW($A$1:$A$8)/($A$1:$A$8=B1)创build一个行数列B1 = $ A $ 1:$ A $ 8。

COUNTIF($ B $ 1:$ B1,B1)将告诉AGGREGATE()函数返回哪一行数组中的哪一个。 当它被拖下来时,计数将从1变为2,以此类推。

在这里输入图像说明

根据您的评论,该公式是dynamic的,以将参考数据限制在A列的范围内。

INDEX(C:C,MATCH("ZZZ",A:A))返回列C中存在数据的最后一行

把它放在D2里,然后抄下来。

 =INDEX($C$1:INDEX(C:C,MATCH("ZZZ",A:A)),AGGREGATE(15,6,ROW($A$1:INDEX(A:A,MATCH("ZZZ",A:A)))/($A$1:INDEX(A:A,MATCH("ZZZ",A:A))=B2),COUNTIF($B$1:$B2,B2))) 

编辑2

我显然有我的列倒过来。

把它放在D2里,然后抄下来。

 =INDEX($C$1:INDEX(C:C,MATCH("ZZZ",A:A)),AGGREGATE(15,6,ROW($B$1:INDEX(B:B,MATCH("ZZZ",A:A)))/($B$1:INDEX(B:B,MATCH("ZZZ",A:A))=A2),COUNTIF($A$1:$A2,A2))) 

在这里输入图像说明