Excel表的多维表数据结构转换为一维表的数据结构,以供更进一步对数据进行加工整理,生成另外格式的汇总表,这是Excel数据处理的一大刚需,几乎每个Excel表哥、表姐都会遇到这样的使用场景。很可惜,一般主流Excel插件都仅限于将二维表转换为一维表的功能实现,另外多种多维转一维的需求都未见有实现的功能。此次Excel催化剂将多维表转换一维表的功能发挥得淋漓尽致。在目前穷我之力有限度的调查插件市场功能的情况下,大胆推测Excel催化剂此多维转一维功能将是Excel插件中在全球范围内实现最彻底,最通用及使用体验最好的功能! 文章出处说明原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。 视频演示多维转一维场景在本人日常工作中,所接触到的大概有以下几类的多维转一维的数据场景 类型一:一行表头,多次重复相同的数据列(相同列是连续排列)此类数据因部分系统导出的数据,一行记录是一个订单,一个订单多条子订单记录时,预留3-5列来存放的类型。目前未发现有插件关注过此需求对其开发。
1.png
类型二:一行表头,多次重复相同的数据列(相同列因有多个不同类型的数据列按间隔式排列)此类型和类型一类似,只是相同类型的列间隔排列了,也未见有相关插件对其开发。
2.png
类型三:一行表头,标准的二维表(一般是经过透视后的数据结构)此类数据类型,主流的Excel二维表转一维表的功能,以下截图故意把透视保留列分开存放,可能部分Excel插件未对其有通用性考虑致使没法使用。
3.png
类型四:多行表头,多维表的结构,最底层表表头仅有一个数据列类型此类型见于数据透视表列字段多重字段排列后出现的多重表头类型,目前主流Excel插件无能为力,仅见过一款国外BI圈流行的Tableau的Excel小插件有其功能,但因说明文档不详,本人竟然不懂操作, 在微软Excel官方PowerBI组件的PowerQuery中,对此类多维表结构(含以下类型五),可胜任将其转一维表,但操作步骤繁多,属高阶用户使用范筹。
4.png
类型五:多行表头,多维表的结构,最底层表表头含有多个数据列类型和类型四类似,同样为多维表头,增加一难度是此处为多个值类型字段如销量、销售额、销售成本等,多层表头和类型四不同之处,此处为合并单元格,类型四为首列的表头有值,之后相同的列留空。
5.png
未知类型若仍然有其他多维表的数据结构未囊括在以上5类中,欢迎留言告之。 以上所有场景都可借助Excel催化剂功能实现功能实现的前提是对数据源无损处理,不需要各种辅助列、各种改变现有表格的内容动作(合并单元格、填充表头空字段等等),对排除的数据行甚至可以手工隐藏或自动筛选功能隐藏不作处理,最佳的体验来源于数据源和数据结构分离,基于原始的数据源即可生成所需的数据结果! 操作方法操作方法这里不展开讲,可以查看视频得知最详细的操作方式,此处仅最大能力地解释一下窗体中的各个参数的定义。
如下图所示,合最复杂的类型五作了数据前后的对比及参数的填写。
5-1.png
5-2.png
当前选择源信息当选择了数据源任一单元格后点击【多维转一维】的按钮时,此处默认识别到活动单元格所在表区域(CurrentRegion)作为数据源表的区域,若和预期不符,可点击【重新选择源】选取所要源数据区域。 保留字段表头行区域此叫法可能不是太准确,凑合着理解吧,是指我们日常透视表中行区域的字段,不参加逆透视的列,如上图的店铺、销售员列,可能实际过程中有较多的这些非逆透视列,可酌情选择自己所要展示在结果表中的列,多个不连续列选择请按住Ctrl后选择。 提取源数据全表在Excel催化剂多个功能中有此设置,因读取数据采用的是OLEDB的数据库读取技术(对数据量大时性能较好),貌似如果指标单元格区域,只有6万多行是可行,若数据行大于此数时,需要规范数据源所在的工作表(首行首列开始是数据源区域,除正常数据源的数据,不包含其他数据在此工作表内),勾选此处将对此工作表进行所有数据读取,数据行记录数可以增加至100万行。 逆透视列选择确认一般性Excel插件无需此设置,看似操作简单了,但最终生成的结果表却是无意义的列标题,需手动更改过来,此表的每一项设置都是为了告诉程序我们的数据源的结构是如何的,及我们目标结果表中需要如何定义生成的新列的名称,部分内容插件可自动生成,无需恐惧如此多的操作,一句话总结:仅限于逻辑无法识别的部分才需要人工去干预填写确认! 列组字段名称在多级表头中,如上图的年份、季度列数据中,需要逆透视把多列数据合并到一列时,需要重新命名的列名称,对应于拉透视表时的多个列字段的列名称。 列值字段名称对数据值区域的内容重新定义是属于什么类型的值数据,如上图的销售量、销售额、销售成本等,对应于拉透视表时的是值区域里的数据列名称。 列字段源表头区域因源数据是同一数据列类型多次重复出现,此处需要把同一数据类型的列给选择上,让程序知道要把这些列都合并成一个新列并给予前面所定义的名称作为新列名称,此部分多级表头部分程序自动识别无需人工选择,一般仅需设定最底层表头的列字段和值字段即可,因此工作窗体汇集了多种多维表数据结构的处理,故双击选择数据时有以下几种操作的不同。 选择多列的数据(选列标题即可,按住Ctrl可选多个间隔开的列),此时区域会出现逗号(,)或冒号(:),此时程序识别为人工已经选择了所有同一类型的数据列,无需使用后两项再进行逻辑加工出所有同一类型的数据列。 选择1列的数据,请选择从左边开始首次出现列标题,如上图的销售量是C4单元格开始出现,然后判断数据的后续出现规律是连续出现还是间隔出现,如类型4为连续出现,类型5为间隔出现。对应地在后两列的【单元间列数】和【单元总列数】上填写间隔或连续的列数量,如类型5中间隔3列重复出现销售量一列的值,此处填写3。单元是指最底层标题对应的上一层标题的数据项数量,如上一层是季度,为3列数据,同样在一行表头中,也类型算其间隔或重复的列数(假设其上方还有一行作了区分不同数据列的组合定义) 转换输出
同样一贯的Excel催化剂数据导出风格,可导出覆盖现有的智能表或新建一个工作表存放,多多使用Excel智能表,可让你数据处理能力得到极大的提升!
总结专业人做专业事,人工智能时代,需要不断树立新观念,重复性的有规律的事情尽量让电脑去完成,人要做更有创造性的工作,对多维表转一维表的场景中,若不是插件的辅助,大量无谓的时间花在手工整理数据源上,非常不明智,希望大家日后再遇到相关的场景时,可以让Excel催化剂帮助减轻大量的工作量,省下时间做更有意义的事情,也欢迎工作中遇到重复性、有规律逻辑性的场景到群里反馈,或许最终可以提炼出插件完成,受惠广大职场人士,少做无谓活,多干创意活,少加班,多多享受优质生活!
|