聊点没用的,万一有用了呢
关于多表格合并的问题,又搞了一天,三点体会:基础数据是关键,怎么强调也不过分;各种方法都有限定条件,注意区分;查找缺陷别钻牛角尖,利用交叉验证。
昨天,在协助其他同事提高效率过程中,出现了不可预料的问题,也就是说,并未派上多大用场。于是,我一直在思考到底哪里出了问题,为什么总是报错,代码无法执行,又花了很多时间。
昨天晚上无功而返,今天早上爬起来,满脑子还是待解的难题。我有个毛病,如果有问题搞不清楚,很难翻篇,一直会在心里翻来覆去颠来倒去,放不下。虽然有很多沮丧,总会告诉自己,无论如何都有收获,不是成功的经验就是失败的经验,花点时间也无妨。
待整理的数据量偏大,录制宏不适合,首先排除;以前使用VBA代码合并表格,可以初步解决重复打开表格复制粘贴的问题,后期仍然需要进行处理,删除多余的表头和空行、标题行等等,也不是最佳方案。而传说中的合并表格神器——Power query插件,没有使用过。光说不练假把式,好不好用自己试试就知道了。
Power query插件是Excel 2016的内置功能,专为处理大数据而来,我只需要利用其中合并多表格的功能即可。网上随便一搜,各种教程应有尽有,有点眼花缭乱,我习惯先自己摸索,不清楚的细节再借助网络。
使用昨天的数据,用Power query插件测试合并表格功能。出师不利,合并失败。于是开始了漫长而焦灼的纠错过程,数据字段必须完全一致,而且不同工作簿的sheet页签名应保持一致,部分表格依然无法合并。
既然利用VBA代码和Power query插件可以实现同样的功能,二者可以相互验证,发现原始数据表是否有问题。缩小范围,从两个表格开始,逐步增加合并表格的数量。
为了测试Power query插件功能,部分表格数据我重新复制粘贴,确保原始数据规范可用,尽管如此,仍有难以解释的错误出现。某个文件始终无法合并成功,但是利用VBA可以,经过对比发现,该文件格式为xls(97-2003),其他均为xlsx格式,修改之后终于成功。
关于VBA代码执行报错,昨天就注意到某些原始数据表有些异常,虽然填报的数据行有限,不知为何显示行数为1048576行,这是Excel表格支持的最大行数,在数据合并过程中,程序认为所有行均有数据,导致合并失败。未经验证,属于合理的推断。今天就是把此类数据表重新复制到新建的sheet页面里,轻松实现了VBA代码合并表格。
Power query插件功能有待继续学习,就目前了解到的多表格合并来说,已经是非常实用的功能了。合并完成以后,几乎不用进行任何调整,当然,前提是基础数据有足够规范。说到这里,总结一下:多表格合并的难点不在于使用哪种方法,而是前期的数据是否规范,对于Excel表格的理解是否到位,工作中经常遇到的情况,就是把表格当文档用,合并单元格、增加标题行等做法,给后期的数据处理带来麻烦。
无论做什么事,永远要想到下一个人。那些报送数据的人,他们是否能够想到,有人下一个环节还要处理,烂摊子如何处置?