如图 左面是人名对应的订单数,右面我想查找订单量前5名的人,这个如何做到呢?订单量前5可以用large 函数做到,但是左侧对应名字怎么办呢,Vlookup的话 有重复订单销量,只显示第一个名字,用INDEX和INDIRECT函数也会遇到同样的问题
这个问题不错,引来的不少高手。
我也班门弄斧来一道公式:
D2输入
=INDEX(A$2:A$7,MATCH(LARGE(B$2:B$7*100-ROW($1:$6),ROW(1:1)),B$2:B$7*100-ROW($1:$6),0))
或
=IF(ROW(1:1)<6,INDEX(A$2:A$7,MATCH(LARGE(B$2:B$7*100-ROW($1:$6),ROW(1:1)),B$2:B$7*100-ROW($1:$6),0)),"")
数组公式,输入后先不要回车,按Ctrl+Shift+Enter结束计算,再向下填充。
E2输入
=VLOOKUP(D2,A:B,2,)
回车并向下填充。
追答你也可以先求E列,再求D列,列式就简单些:
E2=IF(ROW(1:1)>5,"",LARGE(B:B,ROW(1:1)))
回车并向下填充。
D2=INDEX(A:A,SMALL(IF(B$2:B$100=E2,ROW($2:$100)),COUNTIF(E$2:E2,E2)))&""
数组公式,操作同上。
其实,第一道公式,加绝对引用,向下填充也可以向右填充,省略E列公式:
=INDEX(A$2:A$7,MATCH(LARGE($B$2:$B$7*100-ROW($1:$6),ROW(1:1)),$B$2:$B$7*100-ROW($1:$6),0))
这个如果是跨sheet 如何实现呢
就是说数据源在sheet1 我要在sheet2 实现前5的排名
也一样的,公式引用Sheet1里面的数据就行:
在Sheet2的A2输入=IF(ROW(1:1)>5,"",INDEX(Sheet1!A$2:A$7,MATCH(LARGE(Sheet1!$B$2:$B$7*100-ROW($1:$6),ROW(1:1)),Sheet1!$B$2:$B$7*100-ROW($1:$6),0)))
也是数组公式,操作同上,再向下和向右填充(可以往下拉)。
公式给你扩大到100行吧:
=IF(ROW(1:1)>5,"",INDEX(Sheet1!A:A,MATCH(LARGE(Sheet1!$B$2:$B$100*100-ROW($2:$100),ROW(1:1)),Sheet1!$B$2:$B$100*100-ROW($2:$100),0)+1))
这个88的 只会返回王五 不能返回王五和马六