【问题标题】:Convert column to cell string Power Query将列转换为单元格字符串 Power Query
【发布时间】:2015-10-13 19:53:17
【问题描述】:

我需要将 Power Query 中一列的所有值放入一个以逗号分隔的 1 单元格字符串中,如下例所示:

为此,我有以下代码:

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 列,但情况并非总是如此。如何将所有列(无论有多少列)合并为一个?

【问题讨论】:

    标签: excel powerquery


    【解决方案1】:

    您可以使用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,因此您修改后的解决方案是:

    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"
    

    【讨论】:

    • 谢谢你,这正是我想要的! :)
    【解决方案2】:

    您也可以使用更短的代码,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多