当我们使用查找函数VLOOKUP、LOOKUP、INDEX+MATCH进行查找时,如果有多个匹配值,如何才能返回最后一个匹配值呢?
本文介绍使用查找函数查找最后一个匹配值的五种方法。这五种方法分为两大类,第一类先排序再查找,第二类无需排序直接查找。
一、案例

二、解决方法
第一类方法:先对查找值所在列按升序排序,再使用函数查找

对排序后的数据可使用以下三种方法查找最后一次采购价格。
方法一、VLOOKUP函数
在F2单元格输入公式:=VLOOKUP(E2,$A$2:$C$10,3,TRUE)

VLOOKUP函数的第3个参数“True”代表近似匹配,VLOOKUP会查找到小于等于查找值的最大值。
会退后
方法二、LOOKUP函数
在F2单元格输入公式:=LOOKUP(E2,$A$2:$A$10,$C$2:$C$10)

方法三、INDEX+MATCH函数
在F2单元格输入公式:
=INDEX($C$2:$C$10,MATCH(E2,$A$2:$A$10,1))

本例中,MATCH函数的第三个参数“1”代表近似匹配,MATCH函数会查找到小于等于查找值的最大值,查找值所在列须按升序排序。
第二类方法:无需排序,直接使用函数查找
如果查询时,要求不能改变原始数据,那么我们就不能使用上述先排序再查找的方
法。以下将介绍两种无需排序,直接使用函数查找的方法。
方法一、LOOKUP函数
在F2单元格输入公式:=LOOKUP(2,1/($A$2:$A$10=E2),$C$2:$C$10)

本例中使用1/($A$2:$A$10=E2)构造查找区域,返回结果为
{#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!;#DIV/0!;1;#DIV/0!}
LOOKUP函数在“1”和错误值“#DIV/0!”构成的数组中查找值“2”,LOOKUP函数会查找到最后一个“1”所在的位置。
方法二、INDEX+MATCH函数
在F2单元格输入公式:=INDEX($C$2:$C$10,MATCH(2,1/($A$2:$A$10=E2),1))
这是一个数组公式,按Ctrl+Shift+Enter结束公式输入。

与LOOKUP函数类似,使用1/($A$2:$A$10=E2)构造MATCH函数的查找区域,
MATCH函数返回最后一个“1”所在的位置。INDEX函数则返回同一行的C列的值。