Excel之PowerQuery 動(dòng)態(tài)更新表頭
網(wǎng)友提問(wèn):



網(wǎng)友的需求就是,有一張動(dòng)態(tài)的表,隨時(shí)發(fā)生變化,我用自己的表里面的表頭,在這張動(dòng)態(tài)表里面找,如果找到了就返回新的字段名,沒(méi)找到就用原來(lái)自己表里的。
我做了兩張樣例表:


我故意讓表2的 張三、李四、王五 不連續(xù),因?yàn)橐院罂隙〞?huì)有小伙伴遇到這樣的問(wèn)題

如果你的表確實(shí)固定表頭順序,那方法可以改的更簡(jiǎn)單,計(jì)算也會(huì)簡(jiǎn)單,當(dāng)數(shù)據(jù)量大了以后運(yùn)行速度也會(huì)快。為什么游戲在主機(jī)上玩,有時(shí)明明主機(jī)配置很拉跨,可是還是比同檔次PC更順暢一些,因?yàn)橹鳈C(jī)配置是固定的,而你的PC配置是有數(shù)不清的組合,人家代碼和優(yōu)化要考慮方方面面,出問(wèn)題的概率就大。就解決你給我的表,在表2中這么做就可以
= List.Zip({List.Skip(Table.ColumnNames(更改的類(lèi)型),2),表1[更新后]})
這個(gè)得到的結(jié)果替換下面紅色部分
= Table.RenameColumns(表名,{{"原字段名1","新字段名1"},{"原字段名2","新字段名2"},...})

現(xiàn)在我們做的是通用方法,無(wú)論我們的表中字段名順序如何都沒(méi)問(wèn)題
第1步:導(dǎo)入表1和表2? ?略
第2步:添加步驟,命名:新表頭
取表2中更改類(lèi)型這張表的表頭(返回一張列表),遍歷這張列表,如果他里面的元素在表1[原始]列能找到就返回表1[更新后]對(duì)應(yīng)的數(shù)據(jù),否則返回我們表2中原本的字段名。

第3步:并出原表頭與新表頭
這里可以將表轉(zhuǎn)成列表Table.ToColumns(更改的類(lèi)型),再轉(zhuǎn)回表Table.FromColumns(更改的類(lèi)型,新表頭)就搞定了。
但是,很多人說(shuō)這么做慢,數(shù)據(jù)大了以后,會(huì)消耗性能。所以我再提供另一種方法

第4步:修改表頭

我在這篇文章中其實(shí)說(shuō)了三種方法,第1種表頭位置固定,第2種動(dòng)態(tài)表頭轉(zhuǎn)換表,第3種動(dòng)態(tài)表頭替換表頭。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e
更多教程:https://www.bilibili.com/read/cv10222110