前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇总Excel数据,列名不一样怎么办?| Power Query实战

汇总Excel数据,列名不一样怎么办?| Power Query实战

作者头像
大海Power
发布2023-02-06 10:26:29
2.1K0
发布2023-02-06 10:26:29
举报
文章被收录于专栏:用户8950297的专栏

日常工作中,很多朋友遇到类似如下的问题——多个要汇总的Excel工作表,列名却存在一些差异,比如有的表里叫“日期”,而另一个表里可能是“采购日期”……

碰到这种情况,该怎么办?

首先,这个问题如果说有一劳永逸的办法,那肯定是规范数据的源头,比如对填报的数据设定模板,对表头进行锁定……但如果数据已经这个样子了,那么,就要根据实际情况进行灵活处理。以下讲2种比较常见的情况。

视频已在知识星球发布,数据下载链接:https://t.zsxq.com/07pmuqNxc

我是大海,欢迎加入知识星球【Excel到PowerBI】,更多系列视频,更多实战练习,问答更详尽,学习更高效。

第1种正如上面的例子,虽然列名不一致,但是,列的位置是一样的,所以,这个情况处理起来也比较简单,具体如下:

Step-01 用Excel.Workbook函数解析工作簿(注意不要加第2个参数true)

Step-02 展开合并数据

Step-03 删除其他列

Step-04 提升标题行

Step-05 筛选删除多与数据(列名)

即,使用Excel.Workbook函数解析工作簿时,不要添加第二个参数(true)识别列名,这样,得到的结果将是按位置生成的列名,直接合并再筛选数据即可。

接下来是比较复杂的第2种情况,即列的位置也不是一一对应的!

这时,可以继续细分为以下2种情况:

1、列名有比较明确的规则,比如,【日期】列都包含“日期”两个字、【采购人员】列都包含“采购、员”三个字……

这时,因为虽然列名有差异,位置也不一致,但列的命名有规律可循,那么,自然就可以想办法按照规律进行统一。具体处理如下:

Step-01 用Excel.Workbook函数加上第2个参数true解析工作簿

Step-02 添加自定义列,对解析出来的工作表列名进行统一

代码语言:javascript
复制
= Table.RenameColumns(
  [Data],
  List.Transform(
      Table.ColumnNames([Data]),
      (x)=>if Text.Contains(x,"日期")   //如果包含日期,改为“日期”
            then {x, "日期"}
            else if Text.Contains(x,"采购")    //如果包含“采购”
                     and Text.Contains(x,"员")   // 并且包含“员”
                  then {x, "采购员"}            // 改为“采购员”
                  else {x,x}
    )
)

公式的核心是用List.Transform函数,将原表的列名转换为用于对表进行列重命名的函数的参数。

关于List.Tranform函数的详细使用方法,请参考:《用Power Query轻松批量抓取A股数据,及列表转换函数(List.Transform)的使用

Step-03 列名统一后,就可以直接展开合并数据了

2、列名规律不明显,需要人为识别!

这,就没有办法了,只能对一个个表人为地去改好列名,然后再进行合并。

从上面的处理情况来看,即使能总结出规律,处理起来其实也很麻烦。所以,关键的关键,还是在于数据源头上做好规范,否则,后面就一定在数据清洗的过程中花费更大的精力!

学习Power系列知识时,

人人都会遇到很多问题,

知识星球提问,

回答可跟踪可复习,

少走弯路,学习效率更高。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档