取消合并表格以从两列创建唯一值

时间:2018-07-25 22:31:36

标签: excel

我有一个包含2列的表:

“项目ID”和“工具尺寸”。

一个项目可以具有多个工具大小。当前,在Excel中,每个工具都在带有重复项目编号的新行中输入。

我想避免项目编号重复,而是将该项目的所有工具尺寸都用逗号合并到一个单元格中。

如果一个项目包含1个工具,请保持不变。

如果一个项目包含2个工具,请将这两个工具合并到该项目编号的一个单元格中。

如果一个项目包含3个工具,请将这三个工具合并到该项目编号的一个单元格中,依此类推。

enter image description here

我尝试了=IF($B2=B3,CONCATENATE(C2,",",C3),C2)

但是,如果一个项目有两个以上的工具,则该公式将不起作用

1 个答案:

答案 0 :(得分:2)

如果您可以在结果中为每个项目编号一行,则可以使用Get&Transform。大多数步骤都可以使用GUI完成。

  

按项目编号对行进行分组,并执行“所有行”

     

添加具有公式的自定义列:

Table.ToList(
    Table.Transpose(
      Table.FromList(
        Table.Column([Tools],"Tool Size")
)
)
)
  

在上面的公式Tools中,当我对行进行分组时,我将其命名为新列,而“工具大小”是原始数据中该列的名称

     

然后,您只需使用逗号分隔符Expand新的“工具”列,然后删除表列。

整个M代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table9"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Project Number", Int64.Type}, {"Tool Size", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Project Number"}, {{"Tools", each _, type table}}),
    #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.ToList(
    Table.Transpose(
      Table.FromList(
        Table.Column([Tools],"Tool Size")
)
)
)),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom1", "Custom"),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Tools"})
in
    #"Removed Columns"

结果:

enter image description here