点击下方 ↓ 关注,每天免费看Excel专业教程

置顶公众号设为星标 ↑才能每天及时收到推送

个人微信号 | (ID:LiRuiExcel520)

微信服务号 | 跟李锐学Excel(ID:LiRuiExcel)

微信公众号 | Excel函数与公式(ID:ExcelLiRui)

大家好,我是李锐,今天在Excel课程群里看到有同学提问如何从多个Excel工作簿中提取不重复值列表,再制作动态下拉菜单。

由于数据源分散在多个不同的Excel文件中,实际工作要求无论哪个文件中的数据源变动,结果中的合并报表和动态下拉菜单都可以自动更新,而且排除重复仅显示不重复值。

这类问题的处理方案较多,可以用power query或者sql查询,也可以用vba编程,虽然之前的图文教程或视频课程里面有包含此类知识点的案例,但今天这个问题要求多技术综合运用,所以专门用这篇教程给出完整操作过程。

本教程内容担心记不全的话,可以分享到朋友圈给自己备份一份。

除了本文内容,还想全面、系统、快速提升Excel技能,少走弯路的同学,请搜索微信公众号“跟李锐学Excel”点击底部菜单的“知识店铺”或下方扫码进入

更多不同内容、不同方向的Excel视频课程

(手机微信扫码▲识别图中二维码)

数据源结构展示

首先我把需要用到的Excel文件都放在一个文件夹中,方便数据提取和后期更新。

Excel名称及文件夹位置如下图所示。

北京、上海、广州每个文件中都存放着员工的编号和姓名记录,要求从多个文件中提取不重复的员工记录。

看完文件夹位置和文件名称,下面再来看下每张Excel工作簿文件打开以后的样子。

先来看北京(为了方便大家查看仅给出少量数据,即使有大量数据也同样适用)

再看上海

最后看广州

下面我们开始操作从多个Excel工作簿文件中提取不重复值。

首先介绍一种仅仅点几下鼠标,不需输入任何代码就可以搞定的方法:Power Query法,后面再介绍sql代码法,以及遇到其他要求的扩展应对方法。

Power Query多工作簿提取不重复值

首先打开要放置结果的Excel工作表,操作步骤如下图所示。

这里输入Excel文件所在的路径位置,操作步骤如下图所示。

pq会自动扫描指定位置的所有文件,如下图所示。

将数据源位置加载到pq编辑器,如下图所示:

筛选你需要的Excel工作簿文件,如下图所示:

然后单击Content字段右侧的扩展按钮,如下图所示:

再选择你要提取的数据所在的工作表,如下图所示:

然后整理数据源,设置标题行,如下图所示:

再清除多余的标题行记录,可以借助筛选批量去除勾选,如下图所示:

然后按照你所需要的规则选中字段,按照这个字段删除重复值,即提取这个字段下的不重复值数据,如果需要多字段同时考虑重复,可以同时选中多字段再执行操作,如下图所示:

完成多工作簿不重复值的提取后,可以按某一个规则将记录排序,比如这里是需要按照编号排序,如下图所示:

然后关闭并上载,如下图所示:

仅创建连接即可,方便后续将结果加载到任何位置,如下图所示:

最后打开你想展示结果的位置,加载之前在power query编辑器中整理完毕的数据,如下图所示:

注意这个结果是支持后期自动更新的,无论哪个Excel工作簿中的数据源变动,你都可以一键更新结果,操作如下图所示:

整个操作过程都无需输入任何代码,仅仅点击几下鼠标即可,虽然看起来上面的各种操作截图很多,但是整个操作过程不会超过2分钟,不必害怕麻烦。

虽然power query的方法很简单,但也并不是没有限制,它需要至少Excel 2010版本以上才可以使用,在Excel 2010和2013版本中可以安装power query插件,在Excel 2016及以上版本中power query就是内置功能了,可以直接调用。

需要新版安装包的同学可以进入公众号“跟李锐学Excel”后台发送如下图红色数字,获取对应版本的安装包

可能还有同学会问,我用的是Excel 2007版本,甚至更低版本的Excel,难道就没有办法解决这类问题了吗?

当然也能解决,处理方法很多,我们可以根据情况灵活选择适合的方法。

下面继续介绍一种任何Excel版本都支持的操作方法,由于之前写过的SQL教程极少人阅读和点赞,所以后来没有再写,今天重新提起来这种扩展性很强的方法:SQL查询法。

SQL查询法

这次我们稍微变更一下业务目的,即要求从多个Excel工作簿文件中的B列提取出不重复的员工编号,支持后期的自动更新。

首先我们打开要放置结果的工作表,比如sheet1,调用数据选项卡的现有连接功能,操作如下图所示。

点击浏览更多按钮以后,选择当前文件所在位置,操作如下图所示。

选择表格后,单击确定,如下图所示。

注意此时不要直接导入数据,要点开属性按钮,操作如下图所示。

在连接属性设置中,点击定义按钮,在命令文本中输入sql代码,操作如下图所示。

这时需要根据实际排除重复的规则写sql代码,如果你仅需要每个工作簿中的B列提取不重复值,不删除多个工作簿合并以后的B列重复值,命令文本中的sql代码如下图所示。

select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\北京.xlsx].[员工表$]union allselect distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\上海.xlsx].[员工表$]union allselect distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\广州.xlsx].[员工表$]

为了方便同学们总结,这里给出通用代码结构:

select distinct 列字段 from [路径\工作簿1名称].[工作表名称$]union allselect distinct 列字段 from [路径\工作簿2名称].[工作表名称$]union allselect distinct 列字段 from [路径\工作簿3名称].[工作表名称$]

当然实际情况下按你的路径、文件名、工作表名填写即可,如果有更多文件需要合并,继续在后面连接即可,结构同前所示。

单击确定按钮以后,即可根据你的需要,从多个Excel工作簿文件中提取B列的不重复编号,如下图所示。

扩展需求说明及处理方案

上面的代码是应对多个工作簿内各自删除重复值的,如果工作簿1和工作簿2中包含同样的重复值,不会被删除,这点需要注意。

如果你需要的是无论多个Excel工作簿文件内,还是多文件之间出现重复一律删除,并且按编号排序,看下面的sql代码。

select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\北京.xlsx].[员工表$]unionselect distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\上海.xlsx].[员工表$]unionselect distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\广州.xlsx].[员工表$]order by 编号

和之前代码有两点区别:

1、将union all换成union,作用是合并后也提取不重复值;

2、增加order by 编号,作用是按编号升序排列。

总结一下这种通用代码结构:

select distinct 列字段 from [路径\工作簿1名称].[工作表名称$]unionselect distinct 列字段 from [路径\工作簿2名称].[工作表名称$]unionselect distinct 列字段 from [路径\工作簿3名称].[工作表名称$]order by 列字段

这样即可保证最终结果中不会出现任何重复值,即使不同工作簿文件之间的不重复值也会被删除。

这种sql查询法得到的结果,也是同样支持后期自动更新的,一键刷新的位置同样是在数据选项卡下的点击全部刷新。

后期如何快速更新代码

因为结果报表是根据sql查询代码生成的,所以当工作要求变更时,如何快速更新代码呢?是不是要从头选择数据连接位置、选择文件位置、重写代码呢?

当然不必那么麻烦了,只要第一次写好了代码,后续仅需在结果表中编辑查询就可以修改sql代码了,操作如下图所示。

所以这种方法也算是一劳永逸的帮我们解决问题,而且方便后期的更新,而且还没有Excel版本的任何限制,适用于所有情况。

当然,我们也不好武断的断言,某某方法就是最好的,无论什么时候,建议大家都要根据实际情况,考虑需要处理的问题场景、数据源结构和后期更新要求,以及结合自己所掌握的技术和自身习惯等因素,选择最适合的方法。

其实到哪都是这句话,永远不变的就是一直在变,万能的永远不会是表格,而是操作表格的人,希望每个人都根据需要汲取到适合自己的营养。

更多经典的实战技能,已整理成超清视频的系统课程,方便你系统提升。

(点击蓝字可直接跳转)

老学员随时复学小贴士

由于有的老学员是4年前购买的课程,因买过的课程较多或因时间久忘记从哪里听课,所以专门将各平台的已购课程入口统一整理至下图。

1、搜索微信公众号“LiRuiExcel”点击底部菜单“已购课程”,即可查看到你在各平台的已购课程,方便大家找到并随时复学课程。

2、课程分销推广的奖金也是由此公众号转账至大家的微信钱包(关注后可自动收钱,进入你的微信零钱,在微信支付有转账记录),老学员可以进“知识店铺”点击底部按钮“推广赚钱”或者“我的”-“推广中心”查询到推广奖励明细记录,支持主动提现

此外,里面还有小助手的联系方式,有问题或学习需求可以留言反馈,助手在24小时内回给到回复。

按上图↑识别二维码,查看详情

请把这个公众号推荐给你的朋友:)

今天就先到这里吧,更多干货文章加下方小助手查看。

如果你喜欢这篇文章

欢迎点个在看,分享转发到朋友圈

干货教程 · 信息分享

欢迎扫码↓添加小助手进朋友圈查看

关注微信公众号(ExcelLiRui),每天有干货

关注后置顶公众号设为星标

再也不用担心收不到干货文章了

关注后每天都可以收到Excel干货教程

请把这个公众号推荐给你的朋友

全面、专业、系统提升Excel实战技能