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

如何在Power Query中导入按年份分组列的多工作表数据并规整格式?

Power Query 数据规整解决方案

步骤1:导入多份工作表

  • 打开Excel,点击数据>获取数据>自文件>自工作簿,选择目标文件,在导航器中勾选所有需要处理的工作表,点击转换数据进入Power Query编辑器。

步骤2:设置复合表头(年份+方向)

  • 选中第一行(年份行),右键选择将行作为标题>将第一行用作标题,此时表头会显示为Column1、Column2、2024、2024、2025、2025...
  • 选中第二行(方向行),右键选择将行作为标题>合并标题与第一行,设置分隔符为下划线_,此时表头会变成Column1、Column2、2024_D、2024_A、2025_D、2025_A...
  • 删除已合并到表头的原方向行:点击主页>删除行>删除顶部行。
  • 重命名前两列为Month和Hour:双击列名修改即可。

步骤3:逆透视数据列

  • 选中Month和Hour列,点击转换>逆透视列>逆透视其他列,此时会生成两列:属性(内容为2024_D这类组合值)和值(对应数值)。

步骤4:拆分年份与方向

  • 选中属性列,点击转换>拆分列>按分隔符,选择自定义输入下划线_,选择拆分为列,将新列分别命名为Year和Direction。

步骤5:整理最终结构

  • 删除属性列,调整列顺序为Month、Hour、Year、Direction、Value。
  • 设置各列数据类型:比如Year设为整数,Month设为文本或整数,Value设为小数。

批量处理多工作表

如果需要批量处理所有导入的工作表,可将上述步骤转为自定义函数:

  1. 完成单份工作表的处理后,点击高级编辑器,复制所有M代码。
  2. 点击主页>新建源>空白查询,右键查询重命名为ProcessSheet。
  3. 打开高级编辑器,将代码修改为函数格式,示例:
let
    ProcessSheet = (SheetName as text) as table =>
    let
        Source = Excel.CurrentWorkbook(){[Name=SheetName]}[Content],
        #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Merged Headers" = Table.MergeColumns(#"Promoted Headers", List.Skip(Table.ColumnNames(#"Promoted Headers"),2), Combiner.CombineTextByDelimiter("_", QuoteStyle.None), "Merged"),
        #"Removed Top Rows" = Table.Skip(#"Merged Headers",1),
        #"Renamed Columns" = Table.RenameColumns(#"Removed Top Rows",{{"Column1", "Month"}, {"Column2", "Hour"}}),
        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Renamed Columns", {"Month", "Hour"}, "Attribute", "Value"),
        #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"Year", "Direction"}),
        #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Month", Int64.Type}, {"Hour", Int64.Type}, {"Year", Int64.Type}, {"Direction", type text}, {"Value", type number}}),
        #"Reordered Columns" = Table.ReorderColumns(#"Changed Type",{"Month", "Hour", "Year", "Direction", "Value"})
    in
        #"Reordered Columns"
in
    ProcessSheet
  1. 新建另一个空白查询,输入代码List.Transform(Table.ColumnNames(Excel.CurrentWorkbook()), each ProcessSheet(_)),然后点击转换>表格化,再点击主页>关闭并上载即可得到所有工作表合并后的规整数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:25:24