上一篇文章Power BI Power Query 批量導入1-單Excel工作簿中的所有工作表數據,我講了如何將單個工作簿中所有工作表數據匯總,那么如果想要將某個文件夾下的所有工作簿中的所有工作表匯總該如何操作了?
我現在有某公司北京、成都、廣州、上海各分部的銷售數據工作簿,各分部各年度的數據分別存儲在相應工作簿的對應工作表中,如下圖所示。
1、首先,請按照Power BI Power Query 批量導入1-單Excel工作簿中的所有工作表數據介紹的內容,將“北京”工作簿中的所有表數據導入到Power Query中
2、接下來我們首先去拿到文件夾下所有的工作簿文件的全路徑字符串列表,在Power Query界面中依次點擊“新建源/文件/文件夾”,填入文件夾路徑后點擊確定,在隨后彈出對話框中,直接點擊“轉換數據”按鈕
3、保留“Name”和”Folder Path”2列,刪掉其他所有列
4、然后添加一個自定義列,名稱為“文件全名”,公式為:
=[Folder Path]&[Name]
添加自定義列后,將Name和Folder Path列也刪掉
接下來操作的思路:
1、首先需要將第1步中單工作簿工作表數據合並的操作包裝成一個函數,讓該函數接收一個工作簿路徑參數,並返回最終的合並表
2、隨后我們在剛才前面得到的文件全名的表中調用包裝的函數,這樣每一個文件就會得到一個子列表
3、將子列表展開之后,就會得到所有工作簿中所有工作表的數據匯總結果
首先我們來定義一個參數
1、依次點擊“主頁/管理參數/新建參數”
2、參數的名稱與剛才查詢得到的表的列“文件全名”名稱一樣,設置類型為文本,指定當前值,然后點擊確定
3、隨后我們要將該參數使用到第1步操作得到的那個查詢中去,在查詢列表中選擇“2012年”那個查詢,點擊“主頁/高級編輯器”,將"G:\PowerBI\合並數據源\北京.xlsx"更換為如下代碼,更換完畢后點擊確定按鈕
源 = Excel.Workbook(File.Contents(Text.From(文件全名)), null, true),
4、在”2012年”查詢上右擊,選擇“創建函數”,在隨后彈出的對話框中,設置函數的名稱,我這里以Func開頭,后面跟上函數的含義
![]() |
![]() |
5、在查詢列表中,選中“文件全名”列所在的查詢,依次點擊“添加列/調用自定義函數”,配置自定義函數的參數:新列名,調用的函數名稱,以及參數值得來源。配置完成后,點擊確定按鈕即可。
6、接下來我們展開“子列表”即可,去掉“使用原始列表作為前綴”的勾選。
7、加載完畢后,所得到的數據就是所有工作簿下所有工作表的匯總數據了
8、需要說明一下的是,Power Query加載數據不會自動加載所有數據,如果此時你展開“文件全名”列,看到的列表區可能像下面這樣,只有一個數據,此時你需要點擊“加載更多”來查看