当我们使用查找函数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)

LOOKUP函数的查找原理和VLOOKUP函数近似查找原理类似。

方法三、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列的值。

举报/反馈

初风Excel表格教学

4217获赞 5114粉丝
学好Excel,提高工作效率
关注
0
0
收藏
分享