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

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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

(0)

相关推荐