暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VLOOKUP函数不能查找最后一个值,怎么办?

完美Excel 2021-11-02
3117

学习Excel技术,关注微信公众号:

excelperfect


标签:Excel公式练习


VLOOKUP函数是使用最多的Excel函数之一,能够查找到第一个值并返回对应的值,然而,如果查找的项有多个,如何查找到最后一个值呢?

 

举个例子,如下图1所示的数据,要查找员工15”的最后一项工作任务。

1

 

下面列举几种常用的方法,供大家参考。

 

方法1找到要查找的最后一项任务所在的位置,并获取其值。

 

先将单元格区域A2:A16中的值与要查找的值(在单元格E2中)相比较,最后相同的值肯定其对应的行号最大。

 

A2:A16=E2

得到数组:

{FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE}

 

ROW(A2:A16)

得到数组:

{2;3;4;5;6;7;8;9;10;11;12;13;14;15;16}

 

将上述数组作为IF函数的参数:

IF({FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE},{2;3;4;5;6;7;8;9;10;11;12;13;14;15;16},0)

得到数组:

{0;0;0;0;0;0;0;9;10;11;0;0;0;0;0}

 

取其最大值:

MAX({0;0;0;0;0;0;0;9;10;11;0;0;0;0;0})

得到:

11

即为所查找值对应的最后一项所在位置。

 

传递组INDEX函数取值:

=INDEX(B1:B16,11)

 

因此,完整的公式为:

=INDEX(B1:B16,MAX(IF(A2:A16=E2,ROW(A2:A16),0)))

这是一个数组公式,输入完后要按Ctrl+Shift+Enter组合键。

 

或者,数组公式:

=INDEX(B2:B16,MAX(ROW(A1:A16)*(A1:A16=E2))-ROW(A1))

其原理相同,只是使用了乘法代替上面公式中的IF函数。

 

或者,数组公式:

=INDIRECT("B"&LARGE(IF(A1:A16=E2,ROW(A1:A16)),1))

找到要获取的值的单元格位置,使用INDIRECT函数取其值。

 

方法2经典的LOOKUP函数公式。

=LOOKUP(2,1/(A2:A16=E2),B2:B16)

利用LOOKUP函数的特性,找取最后一个出现的值,并将其取出。

 

还有其它的方法吗?欢迎留言。

 

注:有兴趣的朋友可以到知识星球完美Excel社群下载本文配套示例工作簿。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论