excel合并相似行并填充空列

问题描述 投票:0回答:1

我有如下数据。 我需要在 1、2、3、5、9 的基础上保留相同的列,而第 6、7、8 列需要组合或合并为一个。

对于下面的例子,我们只有 4 行,但它被复制成 8 行。 第 9 行和第 10 行是单独的案例。

什么是最好的方法。我尝试使用 vlookup、merge、concat 来制作主键并合并,但不知何故找不到我所有的行。

专栏1 专栏2 第三列 第四列 第 5 列 第 6 列 第 7 列 第 8 列 第 9 列
大国1 数据列 质量 列名相同 项目列 xyz 状态
查看数据 数据列 质量 列名相同 项目列 xyz 状态
大国1 数据列 质量 列名相同 项目列 xyz 状态
查看数据 数据列 质量 列名相同 项目列 xyz 状态
大国1 数据列 质量 列名相同 项目列 AB型 A
查看数据 数据列 质量 列名相同 项目列 AB型 A
大国1 数据列 质量 列名相同 项目列 AB型 A
查看数据 数据列 质量 列名相同 项目列 AB型 A
阿尔法 数据列 质量 不同的列项目 项目列 xyz 状态
AlphBetaa 数据列 质量 非常不同的列项目 项目列 AB型 A 状态

预期结果:

提前致谢。

excel merge duplicates row
1个回答
1
投票

这也可以使用 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)中提供的 Power Query 完成

使用 Power Query

  • 在数据表中选择一些单元格
  • Data => Get&Transform => from Table/Range
  • 当 PQ 编辑器打开时:
    Home => Advanced Editor
  • 记下第 2 行中的表格Name
  • 粘贴下面的 M 代码代替您看到的内容
  • 将第 2 行中的表名称更改回最初生成的名称。
  • 阅读评论并探索
    Applied Steps
    以了解算法

鉴于此数据:

如果您只对列 1-5 进行分组,那么您将得到 4 个不同的行:

M代码

let

//Change next line to reflect actual data source
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

//set the data types
    #"Changed Type" = Table.TransformColumnTypes(Source,
        List.Transform(Table.ColumnNames(Source), each {_, type text})),

//Group by Cols 1-5 and combine columns 6-9 for each group
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Column1", "Column2", "Column3", "Column4", "Column5"}, 
        List.Transform({"Column6","Column7","Column8","Column9"}, each {_, (t)=>
            Text.Combine(
                List.Distinct(
                    List.RemoveNulls(
                        Table.Column(t,_)
                                    )
                            )
                , ", "), type text}
        ))
in
    #"Grouped Rows"

四排

如果你真的想将 1-5 和 9 分组,那么使用这个代码:

let

//Change next line to reflect actual data source
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

//set the data types
    #"Changed Type" = Table.TransformColumnTypes(Source,
        List.Transform(Table.ColumnNames(Source), each {_, type text})),

//Group by Cols 1-5,9 and combine columns 6-8 for each group
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Column1", "Column2", "Column3", "Column4", "Column5","Column9"}, 
        List.Transform({"Column6","Column7","Column8"}, each {_, (t)=>
            Text.Combine(
                List.Distinct(
                    List.RemoveNulls(
                        Table.Column(t,_)
                                    )
                            )
                , ", "), type text}
        )),
    #"Reordered Columns" = Table.ReorderColumns(#"Grouped Rows",Table.ColumnNames(Source))
in
    #"Reordered Columns"

你会得到这个结果:

© www.soinside.com 2019 - 2024. All rights reserved.