一、手动追加
少量 Sheet 手动追加(适合 Sheet 少、不经常新增工作表)
缺点:后续 Excel 新增 Sheet,必须重新导入、手动加到追加列表,无法自动识别。
1、导入所有工作表(获取数据---Excel---打开导航器)
2、在导航器勾选所有要合并的 Sheet,不要点【加载】,点击【转换数据】进入 Power Query 编辑器
3、追加查询---将查询追加为新查询
- 选择三个或更多表,将所有sheet添加到要追加的表,生成合并表。
4、清洗 & 加载(处理空行/数据类型等)



二、自动合并
(推荐!新增 Sheet 自动合并,无需改查询)
原理: 用 Excel.Workbook() 读取整个 Excel 文件所有 Sheet,筛选有效工作表后批量展开合并;后续 Excel 新增同结构 Sheet,PowerBI 一键刷新就能自动加入汇总表,实现完全自动化。
前提条件
- 所有待合并 Sheet表头文字完全一致(空格、大小写不能有差异);
- 数据从第 1 行表头开始,无上方多余标题、合并单元格;
1、主页 → 获取数据 → Excel 工作簿,选中文件,右键文件 → 转换数据(不勾选任何 Sheet)
- 生成总表,包含列:
Name(工作表名)、Kind、Data(表格内容)、Hidden(是否隐藏)

2、筛选只保留工作表(排除图表 / 宏等)
Kind列筛选,只勾选 Sheet;Hidden列取消勾选 True,排除隐藏工作表;Name列文本筛选,匹配想要的命名
3、展开 Data 列,提取每个 Sheet 的数据


4、提升第一行为表头(统一表头)
- 【主页】-【将第一行用作标题】
5、在任何一列上点击列标题上的筛选按钮,选择文本筛选,让它的值不等于这一列的标题名称,用来把其他Sheet的表头去掉。

6、点击列标题左侧的类型图标,按需修改每列的字段类型。关闭并应用即可。
完成后,在Excel表中新增 Sheet 页。回到 Power BI 中,在【报表视图】下【刷新】即可获取最新的Sheet 数据
三、M 代码实现
M 是 Power Query 的专属脚本语言,全称 M Formula Language。
因为涉及到代码逻辑修改与调试,所以上手有难度
1-在哪里看 / 改
- PowerBI 顶部菜单:转换数据 → 进入 Power Query 编辑器
- 顶部找到【主页】→【高级编辑器】
窗口里整段文字就是完整 M 代码(如果存在代码)
let
// 替换为你的Excel完整路径
FilePath = "C:\数据\汇总表.xlsx",
// 读取整个工作簿所有对象
Source = Excel.Workbook(File.Contents(FilePath), null, true),
// 筛选仅工作表、非隐藏、匹配命名(按需修改筛选条件)
FilterSheet = Table.SelectRows(Source, each [Kind] = "Sheet" and [Hidden] = false),
// 提取每个Sheet的数据表
ExpandData = Table.ExpandTableColumn(FilterSheet, "Data", {"Table"}, {"SheetData"}),
// 跳过空表
RemoveEmpty = Table.SelectRows(ExpandData, each not Table.IsEmpty([SheetData])),
// 每个表统一提升表头
PromoteHeader = Table.TransformColumns(RemoveEmpty, {"SheetData", each Table.PromoteHeaders(_, [PromoteAllScalars=true])}),
// 合并所有Sheet
CombineAll = Table.Combine(RemoveEmpty[SheetData]),
// 添加来源工作表名称列
AddSheetName = Table.AddColumn(CombineAll, "来源工作表", each ExpandData[Name]{[Index]})
in
AddSheetName