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

如何通过Power Query将CSV中的办公室分组表头转为数据列?

用Power Query将分组表头的CSV转换为结构化数据

操作步骤

  1. 导入文本文件到Power Query

    • 打开Excel,点击「数据」→「获取数据」→「从文件」→「从文本/CSV」
    • 选择目标CSV文件,设置分隔符为「无」,点击「转换数据」进入编辑器
  2. 标记办公室名称行

    • 添加自定义列「Office」,使用公式判断当前行是否为办公室名称(数据行含分号,表头不含):
      if not Text.Contains([Column1], ";") then [Column1] else null
      
  3. 向下填充办公室名称

    • 选中「Office」列,点击「转换」→「填充」→「向下」,让所有数据行继承上方最近的办公室名称
  4. 过滤掉原始表头行

    • 选中「Column1」列,筛选出包含分号的行(即数据行),或者直接用M代码:
      Table.SelectRows(上一步骤名, each Text.Contains([Column1], ";"))
      
  5. 合并列(匹配示例输出格式)

    • 若要将办公室名称与数据合并为一行,添加自定义列「Combined」,用对齐格式拼接:
      Text.PadRight([Office], 8) & " " & [Column1]
      
    • 最后删除多余的原始列即可

完整M代码示例

let
    Source = Csv.Document(File.Contents("替换为你的CSV文件路径"), [Delimiter="", Encoding=1252, QuoteStyle=QuoteStyle.None]),
    AddOfficeColumn = Table.AddColumn(Source, "Office", each if not Text.Contains([Column1], ";") then [Column1] else null),
    FillOfficeDown = Table.FillDown(AddOfficeColumn, {"Office"}),
    FilterDataRows = Table.SelectRows(FillOfficeDown, each Text.Contains([Column1], ";")),
    MergeColumns = Table.AddColumn(FilterDataRows, "Combined", each Text.PadRight([Office], 8) & " " & [Column1]),
    RemoveUnusedColumns = Table.RemoveColumns(MergeColumns, {"Column1", "Office"})
in
    RemoveUnusedColumns

注意事项

  • 替换代码中的文件路径为实际路径
  • 调整Text.PadRight的第二个参数(示例为8),可修改办公室名称的对齐宽度
  • 若需要结构化拆分数据,可进一步将「Column1」按分号拆分为日期、时间、商品等独立列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:50:43