Power Query单列内容拆分至多行操作方案咨询
Power Query 拆分指定列内容到独立行操作方案
核心逻辑说明
你提供的待处理内容存在两种分隔场景:
- 多数条目通过换行符分隔
- 部分条目无换行,直接在前一条的
%结束后拼接下一条(如11.74 %p3(149.0 µm...、8.80 %Mean value...),所有有效条目均以%为结束标识,以此作为拆分判断依据即可。
可视化操作步骤(不用写代码也能完成)
- 第一步:将待处理数据导入Power Query编辑器
- 第二步:统一换行符避免识别异常:
右键Column1列名>选择「替换值」,查找值输入#(cr),替换为#(lf),点击确定;再重复一次替换操作,查找值输入#(lf)#(lf),替换为#(lf),清除多余空行 - 第三步:处理无换行的拼接条目:
再次右键Column1列名>选择「替换值」,查找值输入%,替换为%#(lf),点击确定,给所有条目结束的百分号后统一插入换行符 - 第四步:按换行符拆分到行:
右键Column1列名>选择「拆分列」>「按分隔符」,分隔符选择「自定义」,输入#(lf),拆分选项选择「拆分为行」,高级选项中勾选「将引号视为分隔符」,点击确定 - 第五步:清理冗余内容:
右键Column1列名>选择「转换」>「修剪」,清除内容前后的空格、多余引号;再点击列头的筛选按钮,取消勾选空值,删除拆分产生的空行即可
可直接复用的M代码(更快捷)
如果你熟悉高级编辑器操作,可直接替换以下代码,只需调整源步骤对应你的数据源即可:
let 源 = Excel.CurrentWorkbook(){[Name="你的表格名称"]}[Content], 统一换行符 = Table.TransformColumns(源,{{"Column1", each Text.Replace(_, "#(cr)", "#(lf)"), type text}}), 百分号后插入换行 = Table.TransformColumns(统一换行符,{{"Column1", each Text.Replace(_, "%", "%#(lf)"), type text}}), 按换行拆分到行 = Table.ExpandListColumn(Table.TransformColumns(百分号后插入换行, {{"Column1", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"), 修剪内容 = Table.TransformColumns(按换行拆分到行,{{"Column1", Text.Trim, type text}}), 筛选有效行 = Table.SelectRows(修剪内容, each [Column1] <> "" and [Column1] <> """") in 筛选有效行
内容的提问来源于stack exchange,提问作者Vera Katic
相关产品推荐
相关产品推荐

