Power Query - 循环以提取分隔符之间的文本

Power Query - Loop to extract text between delimiters

我正在尝试提取所有可用匹配项的分隔符之间的文本。输入列和所需的输出如下所示:

Index Country (input) Country (desired output)
0 1, USA; 2, France; 3, Germany; USA, France, Germany
1 4, Spain; Spain
2 1, USA; 5, Italy; USA, Italy

我尝试通过使用 ", "";" 作为分隔符来使用“提取”和“拆分列”功能,但它没有按预期工作。我也尝试过使用 Text.BetweenDelimitersSplitter.SplitTextByEachDelimiter 但我无法想出解决方案。

我想在 Power Query 中编写一个循环,可以递归地提取此数据,直到所有国家/地区都提取到每行的新列中。

有什么想法吗?提前致谢!

您所做的似乎是按分号拆分,然后按逗号拆分,然后合并结果。那么让我们这样做

右键单击该列并按分号拆分,每次出现分隔符,高级选项行

右键单击新列并以逗号分隔,每次出现分隔符,高级选项列

右键单击索引和组

在公式栏或 home..advanced editor... 中编辑分组公式...以替换默认值并以此结尾,它使用 , 分隔符组合所有行

, each Text.Combine([ColumnNameGoesHere]," "), type text}})

示例代码:

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Country (input)", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv)}}), "Country (input)"),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Country (input)", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Country (input).1", "Country (input).2"}),
#"Grouped Rows" = Table.Group(#"Split Column by Delimiter1", {"Index"}, {{"Country (desired output)", each Text.Combine([#"Country (input).2"],", "), type text}})
in #"Grouped Rows"

~~~

我假设这是简化的数据,否则只需一步删除所有数字和分号会更简单

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Text" = Table.TransformColumns(Source,{{"Country (input)", each Text.RemoveRange(Text.Remove(_, {"1","2","3","4","5","6","7","8","9","0",";"}),0), type text}})
in #"Text"