如何在 Power Query 中正確展開嵌套表

內容

假設我們有一個包含多個智能表的 Excel 文件:

如何在 Power Query 中正確展開嵌套表

如果您使用以下命令以標準方式將這些表加載到 Power Query 中 數據 - 獲取數據 - 從文件 - 從書 (數據 - 獲取數據 - 從文件 - 從工作簿),然後我們得到這樣的東西:

如何在 Power Query 中正確展開嵌套表

我認為,許多 Power Query 用戶都熟悉這張圖片。 在組合查詢(a la VLOOKUP)、分組(命令 通過...分組 選項卡 轉型),從給定文件夾中導入所有文件等。

在這種情況下,下一個合乎邏輯的步驟通常是一次展開所有嵌套表 - 使用列標題中的雙箭頭按鈕 數據:

如何在 Power Query 中正確展開嵌套表

結果,我們將所有表中的所有行組合成一個整體。 一切都很好,簡單明了。 

現在假設在源表中添加了一個新列(折扣)和/或刪除了現有的一個(城市):

如何在 Power Query 中正確展開嵌套表

那麼我們更新後的請求會返回一張不太漂亮的圖——折扣沒有出現,城市欄變空了,但並沒有消失:

如何在 Power Query 中正確展開嵌套表

很容易看出原因——在公式欄中,您可以清楚地看到擴展列的名稱在函數參數中是硬編碼的 表.展開表列 作為大括號中的列表。

解決這個問題很容易。 首先,讓我們使用函數從任何(例如,第一個)表的標題中獲取列名 表.列名. 它看起來像:

如何在 Power Query 中正確展開嵌套表

這裡:

  • #“其他列已刪除” – 上一步的名稱,我們從中獲取數據
  • 0{} – 我們從中提取表頭的表的編號(從零開始計數,即 0 是第一個表)
  • [資料] – 上一步中的列名,展開的表所在的位置

剩下的就是將公式欄中得到的構造代入函數中 表.展開表列 在擴展表格而不是硬編碼列表的步驟中。 最後應該是這樣的:

如何在 Power Query 中正確展開嵌套表

就這樣。 並且當源數據發生變化時,擴展嵌套表也不會再出現問題。

  • 在 Power Query 中從一張工作表構建多格式表
  • 從多個 Excel 文件構建具有不同標題的表格
  • 將書中所有工作表中的數據收集到一個表中

 

發表評論