Office 365中Power Query如何按序号将单行拆分为多行?
Power Query按序号(1.、2.…)拆分单行到多行的解决方案
核心思路
利用正则表达式的正向预查匹配序号格式(数字+.),拆分时保留序号本身,再将拆分后的列表展开为多行。
分步操作
- 打开Power Query编辑器,加载你的目标表格。
- 添加自定义列,替换
[Spare]为你的实际列名,粘贴以下M代码:
= List.RemoveNulls( List.Transform( Text.Split([Spare], "(?=\d+\.)"), each Text.Trim(_) ) )
- 点击自定义列右侧的「展开到新行」按钮,将列表拆分为多行。
- 按需移除原列、重命名新列或过滤空行。
完整示例M代码
假设你的表格名为Table1,目标列是Spare:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Spare", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "SplitItems", each List.RemoveNulls( List.Transform( Text.Split([Spare], "(?=\d+\.)"), each Text.Trim(_) ) ) ), #"Expanded SplitItems" = Table.ExpandListColumn(#"Added Custom", "SplitItems"), #"Removed Columns" = Table.RemoveColumns(#"Expanded SplitItems",{"Spare"}), #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"SplitItems", "Spare"}}) in #"Renamed Columns"
为什么之前的方法失败?
- 用换行符
#(lf)拆分:原数据中没有换行符,拆分逻辑不匹配,自然无效。 Text.Split([#"Spare"],{"0..9",".",0,RelativePosition.FromStart}):Text.Split的第二个参数仅支持文本/文本列表,不支持这种复杂的位置匹配语法,因此触发错误。
内容的提问来源于stack exchange,提问作者jajangjaras
相关产品推荐
相关产品推荐

