Power Query提取并合并工作表指定范围

2021-09-07 16:37:48 浏览数 (1)

合并多表数据是常见的数据处理工作之一。无论大小公司,难免会遇到需要手工收集一些数据信息,可能是临时性的,也可能IT系统没有架设好的缘故。手工报表的最大特点是:存在一定的不规范性,给整合带来困难。

如下图所示,我们要收集各个省份的相关数据。红框处是理想情况下仅仅存在于表中的信息。但是由于报表填写人员习惯问题,你会得到很多附赠,比如人为插入行,使得不同表格标题不在同一位置。比如人为增加文字或无关的计算(如图中的"4.22提交",乱码等)。这种手工报表如何准确自动合并呢?

核心思想是剔除干扰因素,找到规律,只提取其中规范的数据。对于上图,我们需要提取的是标题行开始(尽管标题不在同一行,但是标题内容固定)直到“总计”行的内容。

在Excel/Power BI中,首先使用文件夹的方式,将数据导入Query

  • Power BI路径:主页-获取数据-文件-文件夹
  • Excel 2016及以上路径:数据-新建查询-从文件-从文件夹
  • Excel 2013路径:Power Query插件(需单独安装)-从文件-从文件夹

新建自定义列Excel.Workbook([Content])大法获取详细数据。

这个时候,如果直接将数据展开,会发现所有无关信息全部进来了。所以在展开前先进行处理(以下步骤为清晰说明,拆分操作,实际使用时可嵌套一步完成)。

第一步去头,添加自定义列,以“省份”为锚,输入以下公式,展开数据后发现标题上方的无关内容都被跳过。

代码语言:javascript复制
Table.Skip([Data],each [Column1]<>"省份")

第二步,去尾,以“总计”为锚,去除“总计”后面的内容。展开发现只保留了需要的数据区域。

代码语言:javascript复制
Table.RemoveLastN([去头],each [Column1]<>"总计")

还有一点不完美的地方,每个表中都有标题,我们可以再嵌套一个提升标题。

代码语言:javascript复制
Table.PromoteHeaders([去尾])

最后再略作删减处理,得到需要的结果。

0 人点赞