關於PowerQuery批量彙總多個Excel工作簿,該功能非常經典實用,操作起來也很簡單,之前已經有幾篇文章介紹過該功能以及可能遇到的各種問題,
批量合併Excel,PowerQuery的這些技巧你應該掌握
Power Query批量合併Excel,數據不是從第一行開始怎麼辦?
上面的第四篇文章介紹的是數據不是從第一行開始但前面空行是相同數量的情況,這種合併起來還比較簡單。有朋友提到更特殊的一種情況,每張Excel表格前面的空行也不相同,那應該怎麼快速批量合併呢?
這篇文章繼續探討解決合併Excel時會遇到的這個問題,比如下面示例中的這幾張表:
從這三張表可以看出,數據前面都有空行,且空行數量都不相等,以這個數據爲例,我們依然從頭開始,再詳細介紹一下PowerQuery批量彙總空行不相等Excel的處理步驟。
下面是詳細操作步驟:
↑ 獲取數據>文件夾
這裏的Excel.Workbook無需加第二個參數,因爲第一行本來也不是標題行,將表的第一行作爲標題沒有意義。
展開以後,添加一個自定義列來解析[Data]列:
Table.PromoteHeaders( //提升標題行
Table.Skip([Data], //跳過表的前 x 行
Table.PositionOf( //計算 x
[Data],
[Column1="訂單日期"],
Occurrence.First,
"Column1"
)
)
)
這串M函數的含義已經註釋計算邏輯,看起來比較長,與上篇文章相比,只是多了Table.PositionOf 函 數,該函數通過查詢某個列名出現的位置,來計算每張表前面有多少空行,利用這個函數的計算結果,來動態返回空行的數量。
將計算出的空行數量傳遞給 Table.Skip 跳過空行數,並利用函數Table.PromoteHeaders 提升標題。
然後就是正常的點擊自定義列右上角的展開按鈕,像往常一樣看到每張表的字段列表,想合併哪些列,直接勾選列名,點擊確定,就會自動將每張表的所選字段合併到一起。
因爲這個示例中,Excel表不規範的地方更多,所以用到了更多的M函數來相應處理,如果能理解M的邏輯最好,即使不理解,遇到相似的問題時,直接複製上面的M代碼套用即可。
至此,關於批量合併Excel可能遇到的問題基本都提到了,如果你還有其他問題或者解決方案,歡迎留言分享。
當然,最重要的還是規範數據源,讓每一張表的格式有統一的標準,這樣才能更簡單高效的完成數據彙總工作,而無需使用各種複雜的M函數。
本文的練習數據,可以在「PowerBI星球」公衆號對話框發送關鍵字“批量合併Excel”下載。
-精彩推薦-
採悟 @ PowerBI星球