提问人:Dave 提问时间:10/25/2023 最后编辑:horseyrideDave 更新时间:10/25/2023 访问量:50
在Power Query中使用换行符将列拆分为行,后跟空格以外的任何内容作为分隔符
Splitting a Column into Rows in Power Query using Line Feed followed by Anything but a Space as a Delimiter
问:
在 Excel 的 Power Query 工具中,我需要执行以下操作:
输入数据
数据 |
---|
foo1.SUB1 foo1.SUB1.1 foo1.SUB1.2 foo1.SUB2 |
输出数据
数据 |
---|
foo1.SUB1 foo1.SUB1.1 foo1.SUB1.2 |
foo1.SUB2 |
换句话说,我需要将一列拆分为几行,其中分隔符是换行符(在 Power Query 中由 #(lf) 表示),后跟空格以外的任何字符。
如果Power Query接受分隔符中的正则表达式,我将使用.#(lf)[^ ]
换句话说,我想创建这个应用步骤:
但是,Power Query无法理解正则表达式。
有什么方法可以做到这一点吗?
答:
2赞
horseyride
10/25/2023
#1
在powerquery中作弊的一种方法是在换行符上拆分,检查每行的第一个字符是否有空格,然后重新组合
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Column1", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),
#"Added Index" = Table.AddIndexColumn(#"Split Column by Delimiter", "Index", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each if Text.Start([Column1],1)<>" " then [Index] else null),
#"Filled Down" = Table.FillDown(#"Added Custom",{"Custom"}),
#"Grouped Rows" = Table.Group(#"Filled Down", {"Custom"}, {{"New", each Text.Combine(List.Transform([Column1], Text.From), "#(lf)"), type text}}),
#"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Custom"})
in #"Removed Columns"
当粘贴回 excel 时,请记住启用自动换行
实际上,您可以在powerquery中使用正则表达式,但它们很痛苦,很慢,而且这里似乎不需要
评论