打破vlookup的限制,一次查找能返回多个结果

最近有粉丝问到:Vlookup如何一次查找到多个结果 , 这个效果就是我们经常提到的一对多查询 , 之前跟大家分享过解决方法 , 但是这个粉丝非要用vlookup解决这个问题 , 想要用vlookup解决这个问题 , 首先我们必须要知道默认情况下vlookup为什么不能一次查找到多个结果 。
一、函数特性
当使用vlookup查找数据 , 遇到重复值的时候 , 函数仅仅会返回第一个找到的结果 , 这个特性不仅仅适用于vlookup , 其它我们常用的查找函数也遵循这个特性 , 这个是Excel默认的规则 , 无法更改 。 这个就是vlookup遇到重复值 , 只能返回一个结果的原因 。
如下图所示 , 我们将查找值设置为2班 , 然后使用vlookup函数来查找班级对应的姓名 , 得到的结果是成吉思汗 , 返回这个结果的原因就是因为成吉思汗在2班的第一个位置 。 所以我们想要使用vlookup函数实现一对多查询 , 就必须要构建一个不重复的查找值 , 这个查找值 , 我们可以使用countif函数来构建
打破vlookup的限制,一次查找能返回多个结果
文章图片
二、构建辅助列
首先我们在数据最前面插入一列空白列 , 随后将公式设置为:=COUNTIF($B$2:B2,$G$2)然后向下填充公式 , 这样的话2班的结果就是从1开始的序列 。 这个从1开始序号就是唯一值 , 可以将其作为查找值 。 跟大家简单讲解下这个公式
打破vlookup的限制,一次查找能返回多个结果
文章图片
公式:=COUNTIF($B$2:B2,$G$2) , COUNTIF的作用是条件计数 。
第一参数:$B$2:B2 , 计数的数据区域
第二参数:$G$2 , 计数条件
这个函数的关键点在第一参数计数的数据区域 , 在这里第一个B2加了$符号就代表绝对引用 , 向下拖动数据的时候它是不会发生变化的 , 而第二个B2没有加$符号就代表相对引用 , 向下拖动数据的时候它是会发生变化的 , 也就是说数据区域是一个单元格 , 一个单元格的增加的 , 所以才会出现分组计数的效果 。
三、实现一对多查询
上一步中我们通过使用countif为每个班级都构建了一列从1开始的序列 , 这个序列就可以作为查找值来使用 , 因为它是不重复的 , 我们可以将ROW(A1)作为vlookup的查找值 , 因为它的结果也是从1开始的序列 , 这个是时候我们可以将公式设置为:=VLOOKUP(ROW(A1),$A$1:$D$16,3,0)向下填充即可 , 这个函数非常简单 , 就是一个vlookup的常规用法 , 不过在这里查找值变为了ROW(A1) 。 如下图所示
打破vlookup的限制,一次查找能返回多个结果
文章图片
最后我们发现下方会有错误值出现 , 出现错误值的原因是因为 , 已经查找到了所有数据公式拉多了 , 这个时候我们可以使用IFERROR函数来屏蔽下错误值 , 最终的公式为:=IFERROR(VLOOKUP(ROW(A1),$A$1:$D$16,3,0),"")至此就设置完毕了 , 我们就可以使用一次vlookup来返回多个结果了
以上就是今天分享的全部内容 , 怎么样?你学会了吗?
打破vlookup的限制,一次查找能返回多个结果】我是Excel从零到一 , 关注我 , 持续分享更多Excel技巧