当我们使用查找函数VLOOKUP、LOOKUP、INDEX+MATCH进行查找时,如果有多个匹配值,如何才能返回最后一个匹配值呢?
本文介绍使用查找函数查找最后一个匹配值的五种方法。这五种方法分为两大类,第一类先排序再查找,第二类无需排序直接查找。
如下图所示,A1:C10为三种产品在不同日期的采购价格表。要求查询“品2”的最后一次采购价格。
第一类方法:先对查找值所在列按升序排序,再使用函数查找
本例中,查找值所在列为“产品”列,以“产品”列作为排序依据,按升序排序。排序结果如下图所示:
对排序后的数据可使用以下三种方法查找最后一次采购价格。
方法一、VLOOKUP函数
在F2单元格输入公式:=VLOOKUP(E2,$A$2:$C$10,3,TRUE)
VLOOKUP函数的第3个参数“True”代表近似匹配,VLOOKUP会查找到小于等于查找值的最大值。
本例中,对“产品”列按照升序排序,当VLOOKUP查找到A5单元格的“品2”时,由于“品2”大于“品1”,VLOOKUP函数会退后一行查找到A4单元格的“品1”,并返回C4单元格的值,也就是“品A”的最后一次采购价格。
方法二、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列的值。