使用LARGE&ROW函数dynamicsorting问题

我试图根据列A中的值列表dynamic显示列C中的sorting列。传统上,我发现在列C中使用下面的公式很好:

= LARGE(A $ 1:A $ 10,ROW(A1)-ROW($ A $ 1)+1)

在获得一个sorting的值列表之后,我对列B(与这个值相关联的人)做一个VLOOKUP,用相关的值填充列D,给我一个dynamicsorting的值/名称组合列表。 但是,出现了一个问题,我找不到解决办法。

奇怪的是,这从来没有发生过,但两个人有相同的价值。 当我尝试为第二个重复值做一个VLOOKUP时,就会出现这个问题,在VLOOKUP的两个实例中,我都会得到与第一个人相关的名字。 如果值相同,如何强制Excel不重复名称?

使用INDEX函数 ,其中行号由AGGREGATE¹函数返回,而AGGREGATE子函数为15( 小 ),从COUNTIF函数获取它的k参数。

第一个二三的结果

D2:E2中的标准公式是,

=LARGE(B$2:B$11, ROW(1:1)) =INDEX(A$2:A$11, AGGREGATE(15, 6, ROW($1:$10)/(B$2:B$11=D2), COUNTIF(D$2:D2, D2))) 'pre-XL2010 alternate for E2 =INDEX(A$2:A$11, SMALL(INDEX(ROW($1:$10)+(B$2:B$11<>D2)*1E+99, , ), COUNTIF(D$2:D2, D2))) 

根据需要填写。

请注意,行ROW(1:10)A2:A11位置,而不是工作表上的实际行。 如果您愿意,您可以用原来的行ROW(A1)-ROW($A$1)+1replace行ROW(1:1)


¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。