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

如何在Power Query中拆分CSV列表字段且避免数据重复

如何在Power Query中拆分CSV列表字段且避免数据重复

我完全懂你的困扰!用Power Query处理这个CSV的时候,默认的拆分展开总是把name和number重复绑定到每个列表项上,和你想要的简洁竖排格式完全不符对吧?别着急,咱们一步步来解决这个问题:

首先明确你的核心需求:把每一行的name、number,以及对应的多行列表项,按顺序竖排展示,而不是让name和number重复出现在每个列表项的行里。

操作步骤(带Power Query具体操作)

1. 正确导入CSV文件

打开Power Query编辑器,选择「从文件」→「从CSV」,找到你的目标文件。在导入设置里一定要注意:

  • 分隔符选分号(;)(你的CSV是用分号分隔的)
  • 把「数据类型检测」设为「无」,避免Power Query错误识别换行的列表内容为新行

导入后你应该能看到三列:name、number、list,其中list列是包含换行和编号的文本内容。

2. 清理list列的编号前缀

选中list列,切换到「转换」选项卡,点击「替换值」:

  • 查找内容输入:\d+\. (这是正则表达式,匹配所有「数字+句号+空格」的前缀)
  • 勾选「使用正则表达式」
  • 替换为留空,点击确定
    这一步会把1. item1这类内容变成item1,去掉多余的编号。

3. 生成每行的竖排条目列表

添加一个自定义列(「添加列」→「自定义列」),输入以下公式:

{[name], [number]} & Text.Split([list], "#(lf)")

这个公式的作用是:把当前行的name、number,和拆分后的所有列表项(按换行符#(lf)拆分)合并成一个有序列表。

4. 合并所有列表并转换成目标表格

  • 选中刚添加的「竖排条目」列,切换到「转换」选项卡,点击「提取值」→ 分隔符选「换行」
  • 接着把提取后的内容转成列表,再用「转换」→「转成表格」,生成只有一列的表格
  • 最后插入表头行:在表格最上方插入三行,分别输入name、number、list,就得到了你想要的格式

用M代码一键实现(直接复制到Power Query高级编辑器即可)

如果你想更高效,直接把下面的代码替换到Power Query的高级编辑器里,记得把文件路径改成你自己的CSV路径:

let
    源 = Csv.Document(File.Contents("你的CSV文件路径"), [Delimiter=";", Encoding=1252, QuoteStyle=QuoteStyle.Csv]),
    设置表头 = Table.PromoteHeaders(源, [PromoteAllScalars=true]),
    清理列表编号 = Table.ReplaceValue(设置表头,"\d+\. ","",Replacer.ReplaceText,{"list"}),
    生成竖排列表 = Table.AddColumn(清理列表编号, "竖排条目", each {[name], [number]} & Text.Split([list], "#(lf)")),
    合并所有列表 = List.Combine(生成竖排列表[竖排条目]),
    转成表格 = Table.FromList(合并所有列表, Splitter.SplitByNothing(), {"内容"}),
    添加表头行 = Table.InsertRows(转成表格, 0, {[内容="name"], [内容="number"], [内容="list"]})
in
    添加表头行

为什么之前会出现重复?

你之前用的默认拆分展开,本质是把每个列表项和当前行的name、number做笛卡尔积,也就是每个列表项都对应一遍当前行的name和number,所以才会出现大量重复。而我们现在的方法是把每行的内容按顺序拼接成竖排的条目,完全避免了重复。

备注:内容来源于stack exchange,提问作者tbeest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:14:38