问题使用LARGE& ROW函数动态排序

时间:2015-10-24 19:11:26

标签: excel excel-formula

我正在尝试根据A列中的值列表动态显示C列中的已排序列。传统上,我发现使用下面的公式在C列中运行良好:

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

在获得值的排序列表之后,然后在列B(与值关联的人)上执行VLOOKUP以使用关联值填充列D,从而为我提供动态排序的值/名称组合列表。但是,出现了一个问题,我无法找到解决方案。

奇怪的是,这种情况从未发生过,但两个人的价值相同。当我尝试为第二个重复值执行VLOOKUP时,会出现问题,我在VLOOKUP的两个实例中都获得了与第一个人相关联的名称。如果值相同,如何强制Excel不重复名称?

1 个答案:

答案 0 :(得分:2)

使用INDEX function返回行号的AGGREGATE¹ function,AGGREGATE子函数为15(SMALL),从中获取 k 参数COUNTIF function

First Second Third result

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)+1代替ROW(1:1)

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。