在 Power Query 中使用换行将列拆分为行,后跟除空格以外的任何内容作为分隔符

问题描述 投票:0回答:1

在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 不理解正则表达式。

我有办法做到这一点吗?

excel powerquery m
1个回答
0
投票

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"

© www.soinside.com 2019 - 2024. All rights reserved.