首页 > 解决方案 > 合并 Excel 工作表中的行并显示为逗号分隔

问题描述

我在 excel 中有如下数据,其中 A 列和 C 列的组合形成了独特的组合。正如我们所看到的,有重复的行(考虑到 A 列和 C 列)。如何根据 A 列和 C 列合并行并将 B 行显示为逗号分隔。A 列在我当前的工作表中排序。

我在这里看到了类似的问题,但它正在考虑仅基于 1 列的唯一值。

当前数据

我希望数据表示如下。这可能吗?

在此处输入图像描述

标签: excelexcel-formulapowerquery

解决方案


非常简单Power Query,可在 Excel 2010+ 中使用。在这种情况下,一切都可以从用户界面完成。

  • 选择表格中的某个单元格
  • 数据 --> 获取和转换 --> 从表/范围
  • 选择Parent ProductProduct列和分组依据
    • Operation:= All Rows

在此处输入图像描述

  • 添加自定义列
    • 公式:=Table.Column([Grouped],"Sequence")
    • 新列名: Sequence

在此处输入图像描述

  • 选择序列列顶部的双头箭头
    • 提取用逗号分隔的值
  • 删除多余的列并重新排列。

在此处输入图像描述

M-代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Parent Product", type text}, {"Sequence", type any}, {"Product", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Parent Product", "Product"}, {{"Grouped", each _, type table [Parent Product=text, Sequence=anynonnull, Product=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Sequence", each Table.Column([Grouped],"Sequence")),
    #"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Sequence", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
    #"Reordered Columns" = Table.ReorderColumns(#"Extracted Values",{"Parent Product", "Sequence", "Product", "Grouped"}),
    #"Removed Columns" = Table.RemoveColumns(#"Reordered Columns",{"Grouped"})
in
    #"Removed Columns"

推荐阅读