前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VLOOKUP函数不能查找最后一个值,怎么办?

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

作者头像
fanjy
发布2021-11-10 14:40:08
2.1K0
发布2021-11-10 14:40:08
举报
文章被收录于专栏:完美Excel

学习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社群下载本文配套示例工作簿。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档