多Excel文件数据汇总,列名大小写不一致咋办!!!

2021-08-31 11:37:42 浏览数 (1)

小勤:最近收到一份数据,需要对多个Excel工作簿的内容进行汇总,真是麻烦!

大海:多个Excel工作簿内容汇总用Power Query不是很简单的事情吗?前面我不仅推送了大量文章《用PQ自动汇总各种文件数据,这一系列我又都给你整理好了!》,另外,还专门发布了一个关于数据汇总的视频合集《【免费系列视频】Excel数据汇总特辑 | 多个案例,多种情况,举一反三!》

小勤:是啊。但现在又有新情况!给过来的多份数据,看起来都挺规范的,但是,列名居然有的大写,有的小写,有的首字母大写……

大海:那你想一下在哪个步骤可能出问题?

小勤:就是想展开数据实现合并的步骤啊。

大海:那为什么这个步骤就会出问题?

小勤:表里的列名不一样。

大海:那如果在这之前对表的列都进行重命名,即列名弄成一样的,是不是就可以了?

小勤:对啊。但该怎么弄呢?

大海:比如说,我们如果把列名都统一成大写,要怎么办?

小勤:首选要把表的列名取出来,然后将这些列名转换成大写的,然后替换掉原来表里的列名……

大海:对,基本就是这个思路,综合起来的公式也是这样:

代码语言:javascript复制
Table.RenameColumns(    // 3. 对表的列进行重命名
    [Data],
    List.Transform(     // 2. 对表的列名进行转换
        Table.ColumnNames([Data]),    //1. 取出表的列名
        (x)=>{x,Text.Upper(x)}    // 2. 对表的列名转换为大写(和原来的列名合成一对)     
    )
)

小勤:Table.ColumnNames取表的列名,List.Transform进行转换,Table.RenameColumns对表的列进行重命名,一层层往外跟原来的思路真的很匹配。但是,为什么List.Transform函数的第二个参数做成{x,Text.Upper(x)}?

大海:因为List.Transform函数对列名转换为大写后,是要交给Table.RenameColumns函数去调用的,而Table.RenameColumns函数的参数要求就是{原列名,新列名},而其中x就是原列名,Text.Upper(x)就是新列,一起才能构成完整的参数哦。

小勤:可是有很多函数记不住这么多的参数形式啊,怎么办?

大海:PQ里可以简单操作形成步骤公式代码啊。比如这个,你如果不记得,可以随便改一下列名,看一下生成的代码,然后照着写就行了哦。

小勤:有道理!

- 关于解决问题的方法 -

在遇到问题时,首先思考一下:

1、具体是什么问题?

2、在哪个步骤开始出问题?

3、如果要避免这个问题的发生,可以进行什么样的处理?

4、具体怎么处理?

通过这样的方式,层层推进,很多问题自然就迎刃而解,而Power Query恰恰让我们可以很轻松定位到具体出问题的步骤,而且也可以很方便地通过一些操作的方式去生成相应的步骤公式(代码)来做参考,这也是Power Query之所以相对简单易用的地方。

0 人点赞