<p>如何引用已知数据左边列的数据<br>

 

姓名 完成率 排名
张三 90% 3
李四 80% 4
王五 92% 2
赵六 95% 1

我想在另外一个表中,让这个表按照排名顺序排列(因为排名在最右边,所以无法用VLOOKUP 实现,也无法用SUMIF实现,因为姓名为文本,不是数据)请高手指点,谢谢。

提问者: vainmud - 一级

回答 共 1 条
直观一点的办法是,在姓名列左边再添加一列排名,或者直接将排名移动到最左边。再使用VLOOKUP不就行了么?

如果上面的方案由于某些原因不能使用,那么,可以使用Index()函数 加 Match()函数来通过排名查找。

比如,将你的表放在A1:C5范围中,在另一处引用的公式如下:

以下排名位于A11单元格。

排名 姓名
1 =INDEX($A$2:$A$5,MATCH(A12,$C$2:$C$5,0))
2 =INDEX($A$2:$A$5,MATCH(A13,$C$2:$C$5,0))
3 =INDEX($A$2:$A$5,MATCH(A14,$C$2:$C$5,0))
4 =INDEX($A$2:$A$5,MATCH(A15,$C$2:$C$5,0))

最后结果为:
排名 姓名
1 赵六
2 王五
3 张三
4 李四

可以参看附图

Error creating node with http://www.myfootprints.cn/ASPAgent.asp?url=http%3A%2F%2Fhiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2F30adcbefd3f29300adafd556.jpg&contentType=image/*&imgType=.jpg. Unable to fetch: http://www.myfootprints.cn/ASPAgent.asp?url=http%3A%2F%2Fhiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2F30adcbefd3f29300adafd556.jpg&contentType=image/*&imgType=.jpg --- Reason: getaddrinfo ENOTFOUND www.myfootprints.cn --- Fetch details: { "attempt": 3, "method": "GET", "errorCode": "ENOTFOUND", "requestHeaders": { "user-agent": "got (https://github.com/sindresorhus/got)", "accept-encoding": "gzip, deflate, br" } } ---

最好是通过帮助文件详细了解一下Index()与Match()函数的用法,这里只简略说下。
Index(array, row_num, column_num),就是从array这个范围里去找查找第row_num行第column_num列处的值。在上例中,就是去A2:A5(姓名列)去查找,找第几行呢?就要由排名来确定了。所以又用Match()函数去根据排名决定第几行。
Match(lookup_value, lookup_array, match_type),就是得到lookup_value 在 lookup_array 中位于第几行。
于是要找第一名的姓名,就是去看第一名在排名列中居第几行,得到是第4行。然后去姓名列中去查找第4行,得到是赵六这个名字。

全部连起来就是:
=INDEX($A$2:$A$5,MATCH(A12,$C$2:$C$5,0))
了。

Index()和Match()联合还可以做更加复杂的查找,并且能将它简单地实现。

看到这个问题,我不禁想吹嘘一下,我是Excel高手哇,好就没玩它了,可是一看到你的问题,我的感觉就来了。一切是那么熟悉,一切问题都那么小儿科。爽!

你可以下载这个示例Excel文件详细查看,下载地址:http://www.myfootprints.cn/blog/upload/asdfsdaf.xls

 

参考资料: http://www.myfootprints.cn/blog/catalog.asp?cate=4