首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Excel 多表數據合併同步:Power Query 實現動態彙總的最佳實踐

     編輯:程式設計疑難解答

需求分析

  • 多個子表結構相同(列名、順序一致)。
  • 需按順序彙總至總表。
  • 核心要求:子表數據變更時,總表自動更新。

方案對比

方案自動同步難度適用場景
VBA 宏✅ 可實現高舊版 Excel、複雜邏輯
公式(INDIRECT/3D引用)❌ 靜態低少量表、固定結構
Power Query (推薦)✅ 原生支持中現代 Excel (2016+)、動態增減表

Power Query 實現步驟(Excel 2016+ / Office 365)

  1. 規範數據源:將每個子表格式化為「超級表」(Ctrl+T),命名如 表1、表2。
  2. 獲取數據:「數據」選項卡 → 「獲取數據」 → 「來自其他來源」 → 「空白查詢」。
  3. 編寫 M 代碼:高級編輯器中輸入:
    let
        Source = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
        Source2 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
        // 如有更多表繼續添加
        Combined = Table.Combine({Source, Source2}), // 合併
        // 可選:按某列排序
        Sorted = Table.Sort(Combined, {{"日期", Order.Ascending}})
    in
        Sorted
  4. 加載到總表:「關閉並上傳到」 → 「工作表」 → 選擇總表位置。
  5. 自動刷新設置:右鍵總表 → 「表設計」 → 「外部表數據」 → 「屬性」 → 勾選「打開文件時刷新」/「定時刷新」。

進階:動態獲取所有子表(無需手工列舉)

let
    // 獲取工作簿中所有「超級表」
    AllTables = Excel.CurrentWorkbook(),
    // 篩選以「表」開頭的表(或自定義前綴)
    Filtered = Table.SelectRows(AllTables, each Text.StartsWith([Name], "表")),
    // 提取 Content 列並合併
    Combined = Table.Combine(Filtered[Content])
in
    Combined

此法新增子表只需命名以「表」開頭並格式化為超級表,總表刷新即可自動納入,零維護。

跨文件合併(補充)

若子表在不同文件:

  1. 將所有文件放入同一文件夾。
  2. 「獲取數據」→「來自文件」→「來自文件夾」。
  3. 合併文件 → 選擇工作表/表對象 → 確定。

總結

Power Query 是 Excel 多表合併同步的原生、無代碼、可維護方案。核心鍵:子表格式化為超級表 + M 語言動態合併 + 刷新策略配置。告別 VBA 複雜度,擁抱現代 Excel 數據建模能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved