我有一个包含2列的表:
“项目ID”和“工具尺寸”。
一个项目可以具有多个工具大小。当前,在Excel中,每个工具都在带有重复项目编号的新行中输入。
我想避免项目编号重复,而是将该项目的所有工具尺寸都用逗号合并到一个单元格中。
如果一个项目包含1个工具,请保持不变。
如果一个项目包含2个工具,请将这两个工具合并到该项目编号的一个单元格中。
如果一个项目包含3个工具,请将这三个工具合并到该项目编号的一个单元格中,依此类推。
我尝试了=IF($B2=B3,CONCATENATE(C2,",",C3),C2)
但是,如果一个项目有两个以上的工具,则该公式将不起作用
答案 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"
结果: