Excel的多工作薄、多工作表批量合并功能,Excel用户很多这方面的使用场景,也促使了各大Excel各大插件们都在此功能上有所开发,体验程度不一,但总体能够满足大多数的应用场景,本人之前也开发个单独的多工作薄合并功能。 在众多群友反馈想Excel催化剂上也加上多工作薄合并功能。因无法开发出较目前众多插件提供的功能以外较新颖独特的功能,本人最终还是放弃开发此功能。 因微软推出的PowerQuery数据处理ETL插件实在太强大,对于应付多工作薄合并的场景,简直是逆天般轻松易得,故强烈推荐有多工作薄合并需求的转到PowerQuery上完成,取而代之开发个小功能,补足PowerQuery一些短板功能,让多工作薄合并汇总在PowerQuery上能够更顺畅地运行。
简略谈谈PowerQuery是个什么好东西 PowerQuery是微软官方推出的数据处理ETL工具,在Excel2010和Excel2013版本上以插件的形式提供,在Excel2016上已经深度集成到Excel的原生功能中,具体位置在【数据】选项卡内。Excel2016甚至可以使用VBA调用PowerQuery功能模块,数据处理自动化水平得到很多地提升。 在多工作薄合并,多表合并、多表横向追加等功能上,PowerQuery已经做到无需编程知识和SQL知识,只需界面化的鼠标、键盘操作,就可完成过去需要用VBA、SQL复杂处理才能得到的最终结果表数据。同时大量的高级的数据处理功能,只需简单地界面化完成,让传统Excel插件苦苦开发出来的功能,瞬间在PowerQuery面前成为腐朽。 Excel催化剂目前开发的多数功能,都是有意避开PowerQuery所擅长的领域,假设性地对Excel催化剂的使用者有追求使用PowerQuery功能并可能成为重度PowerQuery的使用者,例如多工作薄合并此项PowerQuery最完美支持的功能,就一直保持不开发的姿态。 多工作薄合并之PowerQuery优势 数据结果输出灵活,可突破100万行记录的限制 PowerQuery作为自助式BI的工具一部分,数据处理完的数据结果,一般用于被PowerPivot数据建模工具所引用,Powerpivot对数据的处理能力可突破100万行的Excel表数据,最大的记录数只以用户机的电脑内存有关,内存足够大的64位电脑,装载个1000万行的数据都是小CASE。 若待合并的数据量较大,选择PowerQuery来合并数据是首先。 数据结果可随时刷新,无需重复配置 PowerQuery的数据处理和VBA、VSTO等插件的处理方式有个本质区别在于,PowerQuery处理后的数据,可保留的操作步骤过程元数据,若只是简单修改一些文件名、文件夹名、表名等操作,可轻松在PowerQuery的可视化界面中完成修改。 同时PowerQuery的数据结果是以数据连接的方式存储具体的数据处理步骤,即只需点击【刷新】按钮,即可重新按原来的数据处理逻辑,重新从原始数据中读取数据到目标表中,此过程中无需其他的额外操作即可完成。 数据读取速度更快 因PowerQuery读取原数据,是以数据驱动的形式读取,非一般插件的通过打开工作薄,读取单元格,赋值给数组、再数组返回给单元格等步骤,保守估计PowerQuery读取的速度更快一些。 PowerQuery的致命伤,Excel催化剂帮助补上 前面提到一大堆的PowerQuery在多工作薄汇总上的好处,但不可否认,PowerQuery不是万能,有两点硬伤让其对某些特定场景的数据处理无能为力 第一,PowerQuery不能读取有设置过打开密码的Excel工作薄,因PowerQuery不像VBA那样方便调用Excel的原生功能,PowerQuery遇到有密码的工作薄只能报以投降,当然有其他一些小技巧,用调用网页的方式,通过javaScript来调用Excel对象模型等操作。过于繁琐,普通用户不好操作,对电脑的权限有额外要求等,不推荐学习使用。 第二,PowerQuery读取部分程序生成的xls文件失败,部分PowerBI群友反映在淘宝的生意参谋后台导出的xls文件,不能直接使用PowerQuery来读取,需要额外一步,使用Excel打开xls文件,再保存才能成为标准的xls供PowerQuery来读取。 在Excel催化剂的【Excel文件格式转换】功能中,很好地破解以上两个难题 具体操作如下 步骤一 选择要处理的Excel文件全路径 对同一个文件夹下的所有文件的路径提取,使用第4波介绍的自定义函数,轻松可获取得到,苦仅对部分文件进行处理,也很方便地使用筛选、排序、隐藏行、删除行等操作完成,比直接输入某个文件夹来读取此文件夹下所有文件更为自由灵活。
获取某个文件夹下的所有文件名全路径 同时,利用Excel催化剂开发的自定义函数,还可做许多的关于文件相关的处理
仅获取文件名,不含后缀名 步骤二 构造成生成的新文件的全路径名称 若文件类型需转换,改变目标文件的后缀名即可 若想转换新生成的文件另存为其他路径上,只需修改保存的路径即可
使用自定义函数构造出新的目标文件的全路径 步骤三 选择源文件区域后点击【Excel文件格式转换】 简单配置一下窗体界面,让程序知道从哪里找到目标文件和密码信息 如果生成的新文件,无需密码,去勾选【目标文件是否保留原文件打开密码】即可
匹配转换信息 步骤四 点击【文件类型转换】即可完成 此功能可满足文件类型转换,或xls文件重装保存(源文件和目标文件保持一致),批量去除密码保留密码等操作。以满足以上提及的PowerQuery的两点致命不足的地方。 额外场景 将xlsx转换为xls可供低版本Excel使用 一般来说,更加建议使用xlsx文件保存数据,文件的数据压缩性更强,文件占用空间更小,也更加支持Excel高版本的功能,可能某些场景,需要转换为低版本,供低版本的Excel读取文件,也可使用此功能批量完成。 总结 此篇主要讲述Excel催化剂开发的两个小功能,文件类型转换和密码去除功能,通过这两项功能,再结合PowerQuery的使用,处理多工作薄合并的需求,就变得易如反掌。 同时也看到,一些现成的Excel内置的功能的使用,较我们使用外部插件更为简单易用效率更高,Excel是微软一个出色的产品,其中的每一项功能的开发都是众多最优秀的软件工程师们的成果,所以没有理由舍近求远,放弃使用原生体验很棒的功能,去寻找外部个人开发者开发的小功能。 更合理的方式是:充分利用好现有的Excel原生功能,在其不足的地方进行小修小补,最终达到物尽其用。 欢迎广大Excel用户们,快快进入PowerQuery的世界,绝对不会让你失望而归。
|