当前位置: 欣欣网 > 办公

VLOOKUP只能查找1个值吗?NO!这样子操作简直神了

2024-05-10办公

点击「预约」按钮,预约Excel直播免费学习

小伙伴们,你们好呀!

VLOOKUP函数大家都会用,通常用来 一对一 匹配。

遇到 一对多 的问题,很多人就不知道该怎么办了。

其实加一个 辅助列 的话,用VLOOKUP很容易就能搞定 一对多的匹配问题

今天就这个问题介绍 两个思路 ,希望能对大家有所帮助。

先来看看一对多匹配的 效果图


思路一

1.添加一个辅助列A列,并在A2中输入公式:=B2&COUNTIF($B$1:B2,B2),然后下拉填充。

公式解析:

①COUNTIF函数实现的是对某个区域中的某个值进行计数,所以COUNTIF($B$1:B2,B2)实现的是一个编号的效果。

②公式中的区域写法是$B$1:B2,当公式下拉的时候,区域的范围会随着增加。得到的结果就是辅助列中部门后面的那些数字,表示部门是第几次出现。

③用&符号把部门和第几次出现连接起来,作为VLOOKUP的查找范围的首列。

2.在单元格F2中建立下拉菜单,在单元格G2中输入公式:=IFERROR(VLOOKUP($F$2&ROW(A1),$A:$D,COLUMN(C1),0),""),把公式往右填充至H列,再往下填充,就实现一对多的匹配。

公式解析:

①在VLOOKUP($F$2&ROW(A1),$A:$D,COLUMN(C1),0)这部分,查找条件是$F$2&ROW(A1)。

②F2是要查找的部门,ROW(A1)是A1单元格的行号,也就是1,下拉时会变成2、3……,组合以后会形成和辅助列类似的结果,即「部门名称」+「行号序列」,此时就实现了将一对多匹配的问题变成一对一匹配的问题。

③COLUMN(C1)是为了方便公式可以右拉到H列,不用再为H列重新编写公式。

④IFERROR让公式不显示错误值。

思路二

1.添加一个辅助列A列,并使用公式:=A1+(B2=$F$2)

这是什么意思?

其实在这个公式中,是利用了比较运算得到一个逻辑值,再利用逻辑值计算得到一组数字。

公式解析:

这一组数字和方法1中的数字含义有些类似,也是要查找的部门出现的次数,只不过是反推。即当F2中出现了数据,且通过逻辑判断在B列中找到时,再与当前单元格相加。比如,下图中,当F2为「销售部」时,B列有相同的单元格时,相对应的A列单元格内依次计数为1—4;当B列没有与之相同的单元格时,相对应的A列单元格内显示为0。

区别在于,方法1是通过将部门名称与出现次数合并实现了把一对多匹配变成一对一匹配,方法2是利用VLOOKUP的一个特性:当要找的内容出现多次时,只能匹配第一次出现的结果。

最终的公式是:

=IFERROR(VLOOKUP(ROW(A1),$A:$D,COLUMN(C1),0),"")

在G2录入公式以后,右拉填充至F2,再向下填充。

注意:

在这个公式中,VLOOKUP的第一参数直接使用ROW(A1),也就是数字1,2,3……

这里需要有个思想的转化过程,VLOOKUP找的实际是第一个1,第一个2,第一个3等等,这些正好是要找的部门第一次出现,第二次出现,第三次出现等等。

补充tips:

在公式=A1+(B2=$F$2)中,B2=$F$2是一个比较运算,得到的结果是TRUE或FALSE。在Excel中,逻辑值是可以参与计算的,在计算时TRUE相当于1,FALSE相当于0。

最后,欢迎大家加入Excel高效办公视频课程学习、额外送200套模板。