我有如下数据。 我需要在 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 | 状态 |
预期结果:
这也可以使用 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)中提供的 Power Query 完成
使用 Power Query
Data => Get&Transform => from Table/Range
Home => Advanced Editor
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"