Power Query中如何将工作表内多组表格合并为单个结构化表格
Power Query 按日期行拆分数据并转置为独立日期列操作方案
操作步骤
- 首先为导入的原始表添加从1开始的索引列,用于定位第14行的首个拆分点
- 添加自定义列,编写判断逻辑识别日期行:若当前行索引为14,或指定列(你存储日期的列)符合日期格式/为日期类型,返回当前行的日期值,否则返回
null - 对新增的自定义列执行填充向下操作,使每个日期段下的所有业务行都带上对应所属的日期标识
- 筛选删除原始的日期标题行,仅保留下方的业务数据行
- 选中所有需要保留的业务数据列,按日期标识列分组,分组操作选择「所有行」
- 为分组结果添加自定义列,将每个分组下的表重命名为对应日期值,再合并所有分组表即可得到每个日期独立成列、对应数据展示在列下的最终效果
示例M代码参考
let 源 = Excel.CurrentWorkbook(){[Name="你的导入表名"]}[Content], 添加索引 = Table.AddIndexColumn(源, "索引", 1, 1, Int64.Type), 识别日期行 = Table.AddColumn(添加索引, "日期分组", each if [索引] = 14 or Value.Is([你存放日期的列名], type date) then [你存放日期的列名] else null), 向下填充日期 = Table.FillDown(识别日期行,{"日期分组"}), 移除日期标题行 = Table.SelectRows(向下填充日期, each not Value.Is([你存放日期的列名], type date)), 按日期分组 = Table.Group(移除日期标题行, {"日期分组"}, {{"内容", each _, type table}}), 转置为列 = Table.SplitColumn(Table.Transpose(Table.SelectColumns(按日期分组,{"内容"})), "Column1", each Table.Column(_, "你要展示的业务列名")) in 转置为列
注:代码中所有带中文占位符的部分需要替换为你实际的表名、列名,日期行的判断逻辑也可以根据你实际的日期格式规则调整,不需要完全依赖固定行号。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

