Excel之PowerQuery 动态更新表头
网友提问:



网友的需求就是,有一张动态的表,随时发生变化,我用自己的表里面的表头,在这张动态表里面找,如果找到了就返回新的字段名,没找到就用原来自己表里的。
我做了两张样例表:


我故意让表2的 张三、李四、王五 不连续,因为以后肯定会有小伙伴遇到这样的问题

如果你的表确实固定表头顺序,那方法可以改的更简单,计算也会简单,当数据量大了以后运行速度也会快。为什么游戏在主机上玩,有时明明主机配置很拉跨,可是还是比同档次PC更顺畅一些,因为主机配置是固定的,而你的PC配置是有数不清的组合,人家代码和优化要考虑方方面面,出问题的概率就大。就解决你给我的表,在表2中这么做就可以
= List.Zip({List.Skip(Table.ColumnNames(更改的类型),2),表1[更新后]})
这个得到的结果替换下面红色部分
= Table.RenameColumns(表名,{{"原字段名1","新字段名1"},{"原字段名2","新字段名2"},...})

现在我们做的是通用方法,无论我们的表中字段名顺序如何都没问题
第1步:导入表1和表2 略
第2步:添加步骤,命名:新表头
取表2中更改类型这张表的表头(返回一张列表),遍历这张列表,如果他里面的元素在表1[原始]列能找到就返回表1[更新后]对应的数据,否则返回我们表2中原本的字段名。

第3步:并出原表头与新表头
这里可以将表转成列表Table.ToColumns(更改的类型),再转回表Table.FromColumns(更改的类型,新表头)就搞定了。
但是,很多人说这么做慢,数据大了以后,会消耗性能。所以我再提供另一种方法

第4步:修改表头

我在这篇文章中其实说了三种方法,第1种表头位置固定,第2种动态表头转换表,第3种动态表头替换表头。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e