You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Power Query合并含不同列的多工作表并保留表名

在Power Query合并工作表时添加工作表名称的解决方案

你现在的问题是合并多个工作表后,结果里没带上对应的工作表名称,而且不想给每个工作表单独建表格。你的现有M代码已经完成了合并和过滤,但少了添加工作表名称的步骤,修改起来很简单:

核心思路是在合并所有表之前,给每个工作表的数据表添加一个固定值列,值就是该工作表的名称,具体修改如下:

修改后的M代码

let
    Source = Excel.Workbook(File.Contents("C:\Users\ADMIN2\Documents\TEST.xlsx"), null, true),
    #"Filter Sheets" = Table.SelectRows(Source, each [Kind] = "Sheet"),
    #"Promote Headers" = Table.TransformColumns(#"Filter Sheets", {{"Data", each Table.PromoteHeaders(_, [PromoteAllScalars=true])}}),
    // 新增步骤:给每个数据表添加"工作表名称"列,值对应原表的Name字段
    #"Add Sheet Name Column" = Table.AddColumn(#"Promote Headers", "Data with Sheet Name", each Table.AddColumn([Data], "工作表名称", (x) => [Name])),
    // 合并带工作表名称的数据表
    #"Combine Sheets" = Table.Combine(#"Add Sheet Name Column"[Data with Sheet Name]),
    #"Filtered Rows" = Table.SelectRows(#"Combine Sheets", each [KODE] <> null and [KODE] <> "")
in
    #"Filtered Rows"

关键修改说明

  1. 新增#"Add Sheet Name Column"步骤:用Table.AddColumn给每个行的Data数据表插入一个名为工作表名称的列,列值就是当前行的[Name](也就是工作表的名称)
  2. 合并的时候,不再直接合并原Data列,而是合并新增的Data with Sheet Name列里的表

这样处理后,合并出来的结果就会包含每条记录对应的工作表名称,和你期望的结果一致。

内容的提问来源于stack exchange,提问作者roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:50:27