如何在Power Query中批量修改標題?

源資料(表1)

需要更改的列名清單(表2)

最終的效果

(一) 首先我們來分析下思路。

如果要更換標題需要涉及到的函式是Table.RenameColumns;獲取標題的函式Table.ColumnNames。

(二) 函式的定義及說明

Table.RenameColumns(table as table, renames as list, optional missingField as nullable number) as table

位置引數說明第1引數Table需要操作的表第2引數List新舊2個標題組成的列可選第3函式Nullable number找不到標題是的處理方式。0代表錯誤,1代表返回原表,2代表返回空值

例:

1. 修改單個標題

在表1裡直接輸入公式

=Table.RenameColumns(源,{"列1","姓名"})

   

返回結果:

2. 修改多個標題

在表1裡直接輸入公式

=Table.RenameColumns(源,{{"列1","姓名"},{"列2","學科"},{"列3","教師"}})

   

返回結果:

3. 通過指定列進行修改

上面的操作,都是我們手動一個一個輸入進行更改的,那如果根據指定列的資料進行批量修改標題呢?

標題的更改主要在第2引數,如果是多列標題的更改,格式是{{"",""},{"",""}},也就是列中套列,裡面的每一個小列代表的是每個標題的替換依據,前一個引號裡的文字是原標題,後一個引號裡的文字是新標題。那我們就需要生成這樣一個資料格式的內容。

也就是一個是原表的標題列表,一個是新標題的列表,然後組成函式引數所需要的格式。

新舊2個標題的列表我們都能比較簡單的獲取到。那就是格式的編排問題了,格式可以解釋為{{舊標題第1個資料,新標題的第1個資料},{舊標題的第2個資料,新標題的第2個資料}}

舊標題= Table.ColumnNames(源) 新標題= 表2[標題] 第2引數= List.Transform({0..2}, each List.Combine({{舊標題{_}},{新標題{_}}})) 更改標題= Table.RenameColumns(源,第2引數)

   

在第2引數這裡{0..2}代表有3個列,當然這個引數我們也可以通過函式自動獲取。例如Table.ColumnCount(源)函式獲取標題的數量,但是這裡注意在使用到引數的時候要減去1。

第2引數= List.Transform({0..Table.ColumnCount(源)-1}, each List.Combine({{舊標題{_}},{新標題{_}}}))

       

如果覺得不錯,請點贊轉發下。

請點個贊,轉發分享給更多的人。