假設我們有一個包含多個智能表的 Excel 文件:
如果您使用以下命令以標準方式將這些表加載到 Power Query 中 數據 - 獲取數據 - 從文件 - 從書 (數據 - 獲取數據 - 從文件 - 從工作簿),然後我們得到這樣的東西:
我認為,許多 Power Query 用戶都熟悉這張圖片。 在組合查詢(a la VLOOKUP)、分組(命令 通過...分組 選項卡 轉型),從給定文件夾中導入所有文件等。
在這種情況下,下一個合乎邏輯的步驟通常是一次展開所有嵌套表 - 使用列標題中的雙箭頭按鈕 數據:
結果,我們將所有表中的所有行組合成一個整體。 一切都很好,簡單明了。
現在假設在源表中添加了一個新列(折扣)和/或刪除了現有的一個(城市):
那麼我們更新後的請求會返回一張不太漂亮的圖——折扣沒有出現,城市欄變空了,但並沒有消失:
很容易看出原因——在公式欄中,您可以清楚地看到擴展列的名稱在函數參數中是硬編碼的 表.展開表列 作為大括號中的列表。
解決這個問題很容易。 首先,讓我們使用函數從任何(例如,第一個)表的標題中獲取列名 表.列名. 它看起來像:
這裡:
- #“其他列已刪除” – 上一步的名稱,我們從中獲取數據
- 0{} – 我們從中提取表頭的表的編號(從零開始計數,即 0 是第一個表)
- [資料] – 上一步中的列名,展開的表所在的位置
剩下的就是將公式欄中得到的構造代入函數中 表.展開表列 在擴展表格而不是硬編碼列表的步驟中。 最後應該是這樣的:
就這樣。 並且當源數據發生變化時,擴展嵌套表也不會再出現問題。
- 在 Power Query 中從一張工作表構建多格式表
- 從多個 Excel 文件構建具有不同標題的表格
- 將書中所有工作表中的數據收集到一個表中