http://www.nulj.cn

首页 所有文章 归档 留言 关于我

一对多查询,难不住VLOOKUP_Excel之家ExcelHome

编辑:李靖2021年10月3日993次阅读阅读转载: Excel之家ExcelHome

小伙伴们好啊,今天老祝和大家来学习一下VLOOKUP的高能用法,看看这位大众情人还藏着多少不为人知的秘密。

函数的语法为:

VLOOKUP(要找谁,在哪儿找,返回第几列的内容,精确找还是近似找)

如下图,需要从B~D的数据表中,根据G1单元格的部门,查询该部门所有的姓名。

首先在A2单元格输入以下公式,向下复制:

=(B2=$G$1)+A1

然后在G5单元格输入以下公式,向下复制:

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

简单说一下公式的意思:

1、B列的部门每重复出现一次,A列的序号增加1。

2、VLOOKUP函数使用ROW(A1)得到1至N的递增序列作为查询值,在A:C列这个查询区域中,依次返回与递增序号相对应的C列的姓名。

由于VLOOKUP在有多个匹配结果时,默认返回第一条记录,所以只会返回A列中各个序号首次出现的记录。

3、注意查找区域必须由辅助列A列开始。

4、最后将辅助列字体设置为白色或进行隐藏即可。

如果不使用辅助列,VLOOKUP能不能返回符合条件的多个结果呢?

除了公式稍微复杂了些,其实也是可以的。

在G5输入以下公式,向下复制。

=IFERROR(VLOOKUP(G$1,OFFSET(B$1:D$1,MATCH(G4,C:C,0),0,999),2,0),"")

简单说说这个公式的计算过程:

1、MATCH(G4,C:C,0)部分,以G4单元格的内容“姓名”为查找值,在C列中查找该内容所在的位置1。得到的结果作为OFFSET函数向下偏移的行数。

2、OFFSET函数以“B$1:D$1”为基点,根据MATCH函数的查询结果向下偏移1行。向右偏移的列数为0列,新引用的行数是999行,得到的引用区域作为VLOOKUP函数的查询区域。

3、当公式向下复制到G6单元格时,MATCH函数的查询值就变成了G5单元格中的姓名,并返回该姓名在C列中的位置。后面其他单元格中的公式也是如此。

4、OFFSET函数根据MATCH函数得到的位置信息,得到一个新的999行的引用范围。也就是每查询到一个姓名,就从引用区域中将其排除掉。

有了MATCH和OFFSET函数的帮忙,VLOOKUP函数就如鱼得水了。

此公式实现过程有点绕,如果一时难以理解,可以先收藏一下,实际工作中只要会套用就OK了。

好了,今天的分享就是这些,祝小伙伴们一天好心情!

练手文件在此:

https://pan.baidu.com/s/1Ml7svqggSmKEluHPHDBGxw

提取码: dhn9

图文制作:祝洪忠

感谢阅读,如果觉得本文对您有帮助,请给我点个,或者把本文的网址复制分享其它好友。
本文网址:http://www.nulj.cn/nulj.cn/k/2973.html复制
写博客不容易,服务器成本也很高,感谢谢支持。微信打赏红包

发表评论

李靖的博客

大家好,我是李靖,不是封神榜的托塔天王李靖。我只是一个普通的上班族,1991年出生于湖南邵阳市。我喜欢看书/看电影/摄影/打手游。感谢你访问我的博客,我在博客中会经常分享我喜欢的文章。创建这个博客记录生活,让我学会很多知识也认识了很多朋友。
关于我的更多资料>>

支持博主

写博客不容易,服务器成本也很高。您可以用微信给我发个小红包。疾风知劲草,板荡识诚臣。你的支持就是我的动力。谢谢!
垃圾信息处理邮箱tousu117@163.com icp备案号 粤ICP备10034762号 互联网安全管理备案 不良信息举报平台 Copyright 2021 www.nulj.cn All Rights Reserved