有没有可以识别重复数字的VLOOKUP?

我有一个Excel列中的A列的值列表和旁边的列B我有一个单词列表。 在另一个TAB上,我试图从B中获取A的值最小的单词,然后是第二个较小的值,第三个等等。

例如:A列将有(2,3,3,6,8)和B(车,狗,猫,房子,船)

我首先创build了一个列,我检索了最小的值:

  • 在列X1上,我添加了: SMALL('Table'!$A:$A,1)
  • X2栏上我加了: SMALL('Table'!$A:$A,2)
  • 等等…

然后VLOOKUP为我工作:

  • Y1列上添加了: VLOOKUP(X1,'Table'!$A:$B,2,FALSE)
  • Y2列上添加了: VLOOKUP(X2,'Table'!$A:$B,2,FALSE)

到现在为止还挺好。 我的问题是当我的价值重复。 * ie:在上面的例子中,只要函数在列A中find值3,我就会得到两个单词dog而不是dogcat,因为它只显示了vlookupfind的第一个值。

我已经尝试添加偏移量: =OFFSET(SMALL('Table'!$A:$A,1),1,0)但不知道它是否可以从其他TABS中获取。

有任何帮助或解决方法吗? 提前谢谢了。

我build议使用索引/匹配,而不是VLOOKUP,如果相同的值曾经发生过一次,则添加一个匹配位置;如果之前发生过两次,则使用两次:

 =INDEX(Table!B:B,MATCH(A2,Table!A:A,0)+COUNTIF(A$1:A1,A2)) 

你也可以使用这样的东西来获得最小,次小等等,而不是硬编码: –

 =SMALL(Table!$A:$A,ROW(1:1)) 

在这里输入图像说明

好吧,我将用来分隔具有相同值的行的技巧是为每行添加一个小数目,以使值独一无二。 这是我的公式:

 =LARGE(IF(A$2:A$9="Restaurants",C$2:C$9),ROW(1:1)) 

为了获得最大的价值,这是一个标准的公式

 =INDEX(D$2:D$9,MATCH(LARGE(IF(A$2:A$9="Restaurants",C$2:C$9+ROW(C$2:C$9)/10^7),ROW(1:1)),C$2:C$9+ROW(C$2:C$9)/10^7,0)) 

得到匹配的城市。 即使相等的值不在相邻的行中,这也是可行的。

我不知道您的实际数据中有多less行,如果超过100,您需要使用的数量less于.01。

请注意,这些是数组公式,需要使用Ctrl Shift Enter进行input

对于最小的,只需将LARGE更改为SMALL即可。

在这里输入图像说明

如果你想排除任何非数字值,如“没有排名”,你将需要

 =INDEX(D$2:D$9,MATCH(LARGE(IF((A$2:A$9="Restaurants")*ISNUMBER(C$2:C$9),C$2:C$9+ROW(C$2:C$9)/10^7),ROW(1:1)),C$2:C$9+ROW(C$2:C$9)/10^7,0)) 

我不build议改变它使用D:D,C:C等,因为它会很慢,但它会工作。