将列转换为单元格stringPower Query

我需要将Power Query中列的所有值放入一个由逗号分隔的单元格string中,如下所示:

在这里输入图像说明

要做到这一点,我有以下一段代码:

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Transposed Table" = Table.Transpose(Source), #"Merged Columns" = Table.CombineColumns(#"Transposed Table",{"Column1", "Column2", "Column3"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"), #"KeepString" = #"Merged Columns"[Merged]{0} in #"KeepString" 

这个代码的问题是,它假定总是有3列,但并不总是这样。 我怎样才能合并所有的列(不pipe有多less)?

您可以使用List.Accumulate完成此操作:

 let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], KeepString = List.Accumulate(Source[User], "", (state, current) => if state = "" then current else state & "," & current) in KeepString 

您也可以使用Table.ColumnNames来获取所有列名称的列表。 你可以把它传递给Table.CombineColumns ,所以你修改后的解决scheme是:

 let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Transposed Table" = Table.Transpose(Source), #"Merged Columns" = Table.CombineColumns(#"Transposed Table", Table.ColumnNames(#"Transposed Table"),Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"), #"KeepString" = #"Merged Columns"[Merged]{0} in #"KeepString" 

您也可以使用较短的代码:

 let Source=Excel.CurrentWorkbook( {]Name="Table1"]}[Content], Result = Text.Combine(Source[User], ",") in Result