个人永久性免费-Excel催化剂功能第33波-报表形式数据结构转标准数据源

一般来说,如果有标准的数据源结构,对后续的分析工作将会带来极大的方便。但现实中,许多的原始数据并不预期那样,一个主题的数据已经干净地存放在一个工作表中。今天Excel催化剂再次送上批量化操作,将不规则的难以立即分析使用的报表形式数据源转换为标准的数据库结构数据源。

文章出处说明

原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。

功能修复与更新

  • 20181017 追加可满足主从表结构的报表样式转为标准数据源结构的功能,如单行订单表头+多行明细数据结构的数据源转为一个大表的明细数据。具体可查看视频教程有相应效果演示

业务场景

大量的数据分散在零散的Excel表格中,需要对其进行合并汇总,才能做分析工作。
其中一大类数据为以报表的形式存储的数据结构,例如一份简历、一份财务报表和一张订单等,还有许多需要发送其他人填写的问卷类、收集类表单数据。

对这些报表类型的数据合并,还不同于简单的工作薄合并那样,每个工作表里存放的都是标准的流水式记录单数据。无法简单地将复制粘贴的工作用代码自动化实现。

类似报表形式的原始数据结构
类似报表形式的原始数据结构
期待转换后的格式为标准数据表结构
期待转换后的格式为标准数据表结构

当面对有父子表结构时,如上图的下方有明细数据,明细数据的数量不固定,初版功能以横向展开的形式存放,后期再追加纵向多行数据存放的数据结构。

当遇上一列有多条记录时,结果表以横向展开的方式存放
当遇上一列有多条记录时,结果表以横向展开的方式存放

功能操作指引

前面描述到的业务场景,用代码实现,其实大部分会一点VBA的人,应该都可以写出来,达到能用的水准。

能用到优秀卓越还是有一段距离,不妨耐心看看Excel催化剂的实现方式和你预想的方式有何不同之处,和如此处理后带来的效果是否有借鉴之处

第1步,配置映射关系

首先程序要知道,你的原始数据的结构是怎样的,要提取哪些信息,原始的信息和需要生成的目标表的信息之间的匹配关系如何,这些工作都是最基本的业务逻辑,没法用程序去用逻辑判断产生的。

功能入口位置
功能入口位置

点击【配置映射关系】,程序在当前活动工作薄下,新建一个【字段映射表】。
若仅是追加或修改的方式重新对数据源进行转换,此处程序进行判断,若已有【字段映射表】,将不再新建清空原匹配过的信息。

生成一个字段映射表
生成一个字段映射表

对【字段映射表】填写好之后的效果如下:

字段映射两种方式
字段映射两种方式

当引用其他工作薄的单元格,容易出现带上其他工作薄的文件名或文件路径,下次打开结果表时,会提示链接工作薄是否更新之类的弹窗
同时引用过程中默认变为绝对引用,有$符号,不能进行下拉填充的方式批量处理其他列。

可以把原始数据表复制一份到当作结果表工作薄,在同一工作薄上引用其他工作表单元格,可避免以上说的缺点

当引用其他工作薄的单元格
当引用其他工作薄的单元格
引用当前工作薄其他工作表单元格
引用当前工作薄其他工作表单元格

最后开放只填写原始数据的所在单元格的地址,若选择不方便时,直接输入即可,后期会开发几个自定义函数配合使用,更为方便。

仅仅一个字段列映射,Excel催化剂想了许久,推翻了几种方案,最终以现在的方式呈现,优秀的由来从不是简单的。

推翻过的方案:
用窗体的方式,用户自己填写结果表名称和对应的单元格区域,弊端如下:

  1. 不能批量从原始数据中复制多个单元格作结果表列名称
  2. 不能向下填充的方式一次性填充相邻的源表单元格引用
  3. 窗体和工作表来回切换麻烦
  4. 最要命的是窗体仅使用一次,下次想复用,又要重新填写,不能保存已匹配过信息

选定源表的文件路径区域,转换为目标标准数据表结构

一、先使用GetFiles自定义函数拿到所需转换数据的源文件的路径

使用路径清单而非文件夹,好处如下:

  1. 可自行二次检查文件夹内的文件是否都应用于数据源来调用生成
  2. 有其他特殊文件剔除或筛选时,可充分发挥Excel的查找替换、自动筛选、排序等操作,这里用窗体机械地简单逻辑判断所没法达到的体验
使用GetFiles自定义函数得到路径清单
使用GetFiles自定义函数得到路径清单
二、选择要转换的文件路径区域,点击【选定区域转换】
按提示选择新建新表还是覆盖现有表
按提示选择新建新表还是覆盖现有表

转换后的结果表,原数据中一个工作表转换为一条记录(后期再优化父子表结构的转换可转换多条记录,更符合数据分析场景使用),另加上文件名和工作表名两列以示区分数据来源。

转换后的结果表
转换后的结果表

隐藏的细节处理部分

前面说到,报表格式转标准数据源格式,知道了思路,基本可以自己简单写几句VBA代码得到想要的结果。前提条件是数据量不大的情况下可接受

读取Excel文件,若使用COM的方式来读取,大批量文件处理来说,肯定会有性能瓶颈,所以Excel催化剂一开始就不打算用原生的Excel的VBA对象模型来操作,改换为使用不依赖于Excel的NPOI和EPPLUS两个类库的读取,最终测试结果,NPOI的读取速度领胜!

测试数据情况:
数量量:读取一万个文件,每个文件两个工作表
读取单元格数量:30个单元格的读取
使用时间(含导出到Excel智能表):
xls格式文件,NPOI读取为30多秒;xlsx文件,NPOI为3分钟左右,EPPLUS为10多分钟。

总结

当大量的数据未能以标准的数据表结构存放时,必要给后续的分析工作带了许多麻烦。

而现实中又不能保证所有数据生成都有专门的系统来操作。Excel表格分发容易,使用广泛,很适合做数据收集的工作,数据采集模板,一般以类似报表的形式来做排版,方便填写。

一个非规范化的报表类型数据源,转换为结构化的标准数据表,Excel催化剂为大家想出的方案为:操作体验友好、可复用、高性能的处理方式。一个简单的功能,做到极致,希望大家喜欢。

系列文章

一文带你全面认识Excel催化剂系列功能
安装过程详解及安装失败解决方法
第1波-工作表导航
第2波-数字格式设置
第3波-与PowerbiDesktop互通互联
第4波-一大波自定义函数高级应用,重新定义Excel函数的学习和使用方法
第5波-使用DAX查询从PowerbiDeskTop中获取数据源
第6波-导出PowerbiDesktop模型数据字典
第7波-智能选区功能
第8波-快速可视化数据
第9波-数据透视表自动设置
第10波-快速排列工作表图形对象
第11波-快速批量插入图片
第12波-快速生成、读取、导出条形码二维码
第13波-一键生成自由报表
第14波-一键生成零售购物篮分析
第15波-接入AI人工智能NLP自然语言处理
第16波-N多使用场景的多维表转一维表
第17波-批量文件改名、下载、文件夹创建等
第18波-在Excel上也能玩上词云图
第19波-Excel与Sqlserver零门槛交互-查询篇
第20波-Excel与Sqlserver零门槛交互-数据上传篇
第21波-Excel与Sqlserver零门槛交互-执行SQL
第22波-Excel文件类型、密码批量修改,补齐Power短板
第23波-非同一般地批量拆分工作表
第24波-批量发送邮件并指点不同附件不同变量
第25波-小白适用的文本处理功能
第26波-正确的Excel密码管理之道
第27波-Excel工作表设置快捷操作
第28波-工作薄瘦身,安全地减少非必要冗余
第29波-追加中国特色的中文相关自定义函数
第30波-工作表快捷操作(批量创建、命名、排序、工作表目录) 
第31波-数量金额分组凑数功能,财务表哥表姐最爱
第32波-空行空列批量插入和删除

关于Excel催化剂

Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!

Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!

Excel催化剂插件下载链接:https://pan.baidu.com/s/1gC6joqGY_SIg_yONga9PaQ

因插件使用VSTO开发技术完成,插件的安装需要电脑满足相关的环境配置才能运行,且需可连接外网的方式实现自动更新机制,若下载安装过程中有任何疑问或需要离线版安装等,尽量不单独私聊询问,加QQ群可高效解决(群内已汇集了VSTO开发、Powerbi技术、Sqlserver商业智能等方面的国内顶尖大牛人物,进群的好处不用多说了)

Excel催化剂插件交流群群二维码
Excel催化剂插件交流群群二维码
联系作者.png
联系作者.png
公众号.png
公众号.png

取名催化剂,因Excel本身的强大,并非所有人能够立马享受到,大部分人还是在被Excel软件所虐的阶段,就是头脑里很清晰想达到的效果,而且高手们也已经实现出来,就是自己怎么弄都弄不出来,或者更糟的是还不知道Excel能够做什么而停留在不断地重复、机械、手工地在做着数据,耗费着无数的青春年华岁月。所以催生了是否可以作为一种媒介,让广大的Excel用户们可以瞬间点燃Excel的爆点,无需苦苦地挣扎地没日没夜的技巧学习、高级复杂函数的烧脑,最终走向了从入门到放弃的道路。

最后Excel功能强大,其实还需树立一个观点,不是所有事情都要交给Excel去完成,也不是所有事情Excel都是十分胜任的,外面的世界仍然是一个广阔的世界,Excel只是其中一枚耀眼的明星,还有其他更多同样精彩强大的技术、工具等。*Excel催化剂也将借力这些其他技术,让Excel能够发挥更强大的爆发!

关于Excel催化剂作者

姓名:李伟坚,从事数据分析工作多年(BI方向),一名同样在路上的学习者。
服务过行业:零售特别是鞋服类的零售行业,电商(淘宝、天猫、京东、唯品会)

技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。
历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。

擅长技术领域:Excel等Office家族软件、VBA&VSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。

2018年开始职业生涯作了重大调整,从原来的正职工作,转为自由职业者,暂无固定收入,暂对前面道路不太明朗,苦重新回到正职工作,对Excel催化剂的运营和开发必定受到很大的影响(正职工作时间内不可能维护也不可能随便把工作时间内的成果公布于外,工作外的时间也十分有限,因已而立之年,家庭责任重大)。

和广大拥护者一同期盼:Excel催化剂一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢(初步设想可以数据顾问的方式或一些小型项目开发的方式合作)。)

猜你喜欢

转载自www.cnblogs.com/ExcelCuiHuaJi/p/10737739.html