点击下方 ↓ 关注,每天免费看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 all
select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\上海.xlsx].[员工表$]
union all
select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\广州.xlsx].[员工表$]
为了方便同学们总结,这里给出通用代码结构:
select distinct 列字段 from [路径\工作簿1名称].[工作表名称$]
union all
select distinct 列字段 from [路径\工作簿2名称].[工作表名称$]
union all
select distinct 列字段 from [路径\工作簿3名称].[工作表名称$]
当然实际情况下按你的路径、文件名、工作表名填写即可,如果有更多文件需要合并,继续在后面连接即可,结构同前所示。
单击确定按钮以后,即可根据你的需要,从多个Excel工作簿文件中提取B列的不重复编号,如下图所示。
扩展需求说明及处理方案
上面的代码是应对多个工作簿内各自删除重复值的,如果工作簿1和工作簿2中包含同样的重复值,不会被删除,这点需要注意。
如果你需要的是无论多个Excel工作簿文件内,还是多文件之间出现重复一律删除,并且按编号排序,看下面的sql代码。
select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\北京.xlsx].[员工表$]
union
select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\上海.xlsx].[员工表$]
union
select distinct 编号 from [E:\公众号“跟李锐学Excel”\Excel函数与公式\20210123 从多文件多工作簿中动态提取出不重复值,一键更新结果\广州.xlsx].[员工表$]
order by 编号
和之前代码有两点区别:
1、将union all换成union,作用是合并后也提取不重复值;
2、增加order by 编号,作用是按编号升序排列。
总结一下这种通用代码结构:
select distinct 列字段 from [路径\工作簿1名称].[工作表名称$]
union
select distinct 列字段 from [路径\工作簿2名称].[工作表名称$]
union
select distinct 列字段 from [路径\工作簿3名称].[工作表名称$]
order by 列字段
这样即可保证最终结果中不会出现任何重复值,即使不同工作簿文件之间的不重复值也会被删除。
这种sql查询法得到的结果,也是同样支持后期自动更新的,一键刷新的位置同样是在数据选项卡下的点击全部刷新。
后期如何快速更新代码
因为结果报表是根据sql查询代码生成的,所以当工作要求变更时,如何快速更新代码呢?是不是要从头选择数据连接位置、选择文件位置、重写代码呢?
当然不必那么麻烦了,只要第一次写好了代码,后续仅需在结果表中编辑查询就可以修改sql代码了,操作如下图所示。
所以这种方法也算是一劳永逸的帮我们解决问题,而且方便后期的更新,而且还没有Excel版本的任何限制,适用于所有情况。
当然,我们也不好武断的断言,某某方法就是最好的,无论什么时候,建议大家都要根据实际情况,考虑需要处理的问题场景、数据源结构和后期更新要求,以及结合自己所掌握的技术和自身习惯等因素,选择最适合的方法。
其实到哪都是这句话,永远不变的就是一直在变,万能的永远不会是表格,而是操作表格的人,希望每个人都根据需要汲取到适合自己的营养。
更多经典的实战技能,已整理成超清视频的系统课程,方便你系统提升。
(点击蓝字可直接跳转)
老学员随时复学小贴士
由于有的老学员是4年前购买的课程,因买过的课程较多或因时间久忘记从哪里听课,所以专门将各平台的已购课程入口统一整理至下图。
1、搜索微信公众号“LiRuiExcel”点击底部菜单“已购课程”,即可查看到你在各平台的已购课程,方便大家找到并随时复学课程。
2、课程分销推广的奖金也是由此公众号转账至大家的微信钱包(关注后可自动收钱,进入你的微信零钱,在微信支付有转账记录),老学员可以进“知识店铺”点击底部按钮“推广赚钱”或者“我的”-“推广中心”查询到推广奖励明细记录,支持主动提现。
此外,里面还有小助手的联系方式,有问题或学习需求可以留言反馈,助手在24小时内回给到回复。
按上图↑识别二维码,查看详情
请把这个公众号推荐给你的朋友:)
今天就先到这里吧,更多干货文章加下方小助手查看。
如果你喜欢这篇文章
欢迎点个在看,分享转发到朋友圈
干货教程 · 信息分享
欢迎扫码↓添加小助手进朋友圈查看
关注微信公众号(ExcelLiRui),每天有干货
关注后置顶公众号或设为星标
再也不用担心收不到干货文章了
关注后每天都可以收到Excel干货教程
请把这个公众号推荐给你的朋友
全面、专业、系统提升Excel实战技能
热门跟贴