03.03 VLOOKUP如何返回多个值?

小神烧香


VLOOKUP函数有一个特点就是,就是当有多条记录满足查询条件时,默认值返回第一条记录。要想返回多条记录,需要借助辅助列。

首先在第一列之前新建一个辅助列,统计查询条件“7”班第几次出现。在A2单元格输入公式“=(B2=$J$3)+N(A1)”并向下复制。

然后在K3单元格用VLOOKUP函数进行查询,对应公式为

=IFERROR(VLOOKUP(ROW(A1),$A$2:$C$16,3,0),"")

输完公式之后,用鼠标向下拖动复制,直到出现空白为止。

这个公式也比较好理解。

IFERROR函数的作用是屏蔽错误值,当查询不到的时候显示为空白而非错误#NA.

VLOOKUP函数有一个特点,就是如果有多个满足查询条件的记录,默认值返回第一条记录。

所以,VLOOKUP函数的第一个参数并非是查询条件“7”,而是取得A1单元格对应的行号ROW(A1),在向下拖动的过程中会逐渐变成A2、A3、A4..对应的行号,即1、2、3、4...,即查询数字1、2、3、4等第一次出现的位置,它们对应的就是所有7班的记录。

VLOOKUP其他参数的用法和其普通查询并无二致。


其实如果不用辅助列的话也可以查询多个值,可以用如下所示的数组公式。

=IFERROR(INDEX($B$1:$B$16,SMALL(IF($A$1:$A$16=$I$3,ROW($A$1:$A$16)),ROW(A1))),"")

输完公式之后需要按Ctrl+Shift+Enter确定输入,因为这是一个数组公式。然后向下拖动复制,直到出现空白行为止。

关于此公式的详细解释大家可以参照作者主页置顶的一篇文章《一篇文章带你全面掌握Excel中的各种数据查询知识与技巧》。


师说新语


vlookup函数使用一对多查询需要借助辅助列来完成,,具体方法如下

一、构建辅助列

如图,我们要查找1班的所有成员,我们在图中绿色填充区域设置公式为=(B2=$E$2)+A1并向下填充得到结果,

辅助列解释

E2的结果为1班且绝对引用,这样设置的结果是每当遇到1班的成员其函数结果都会加1,且1班的成员会在第一个,这个是什么意思呢,比如项羽在三个5区域中的第一个位置,而杨戬也是两个2区域的第一个位置,

二、设置公式

公式:IFERROR(VLOOKUP(ROW(A1),$A$2:$C$12,3,0),"")

公式解析

vlookup函的第一参数为row函数返回的行号,向下拖动时,row(A1)的值等于1,也就说是vlookup函数的第一参数为1,然后我们在辅助列中查找1的值,在第一列中1是重复值,当vlookup遇到重复值时,vlookup会返回它查找到的第一个参数,所以vlookup函数的会返回结果鲁班。

我们向下拖动,第一参数会变为ROW(A2),它的值是2,函数会在辅助列查找2,而2以上重复值,函数会返回查找到的第一个结果,也就是杨戬

以此类推

我们构建的辅助列中每个不同数值的第一个一定是我们的查找结果,然后又利用vlookup函数查找重复值的时候仅仅会返回查找到的第一个值,就能实现一对多查询的目的

我们是Excel从零到一,你们的关注转发和点赞是对我最大的支持~


分享到:


相關文章: