[A] [B] [C] [D] [E]
ABC DFC 20
DE DE 12
GF 11
ABC 19
DE 17
DE 15
XE 14
ABC 10
我想在[列B]和[列C]的[列D]和[列E]中使用[列B]中的[列A]中的范围排在前5位。
基于上面的这个例子,[D]和[E]的最终结果如下:
[D] [E]
ABC 19
DE 17
DE 15
DE 12
ABC 10
提前感谢您的解决方案。
编辑:我应该补充一下。 [A列]是动态的,可以包含第2到6行的值(作为示例)。
答案 0 :(得分:1)
在单元格E1中并向下复制:
=IF(ROW(E1)>SUMPRODUCT(COUNTIF($B$1:$B$8,$A$1:$A$6)),"",LARGE(INDEX((COUNTIF($A$1:$A$6,$B$1:$B$8)>0)*$C$1:$C$8,),ROW(E1)))
在单元格D1中并向下复制:
=IF(E1="","",INDEX($B$1:$B$8,MATCH(E1,$C$1:$C$8,0)))
两个公式都是常规公式,不需要数组输入。在这两种情况下,请调整B和C列参考以适合您的实际数据。不要使用整列引用。如有必要,请为列B和C范围引用使用动态命名范围
编辑:如果C列的前五位数字的数值有重复,请在单元格D1中使用此公式并复制:
=IF(E1="","",INDEX($B$1:$B$8,SMALL(INDEX(($C$1:$C$8=E1)*ROW($C$1:$C$8),),COUNTIF($C$1:$C$8,"<>"&E1)+COUNTIF(E$1:E1,E1))))
答案 1 :(得分:0)
较新的AGGREGATE function可以帮助检索相应的值,并将相关的行号传递给INDEX function以检索名称。
在E2:F2中作为标准公式,
=INDEX(B:B, AGGREGATE(15, 6, ROW(B$1:INDEX(B:B, MATCH(1E+99, C:C)))/(C$1:INDEX(C:C, MATCH(1E+99, C:C))=F2), COUNTIF(F$2:F2, F2)))
=AGGREGATE(14, 6, C$2:INDEX(C:C, MATCH(1E+99,C:C ))/ISNUMBER(MATCH(B$2:INDEX(B:B, MATCH(1E+99, C:C)), A$2:INDEX(A:A, MATCH("zzz", A:A)), 0)), ROW(1:1))
再填充四行。
请注意,我已更改了您的某个值,以演示如何处理重复项。