在Excel中使用相同列和2个不同列合并行

thigvfpy  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(147)

我有下面的数据。
我需要保持同一列的基础上1,2,3,5,9和列6,7,8需要合并或合并成一个。
对于下面的示例,前8行是重复的,但实际上有4行。第9行和第10行是不同的情况。
最好的方法是什么我尝试使用vlookup,merge,concat来创建主键并合并,但不知何故,我的所有行都找不到。
| 栏目1|栏目2|栏目3|栏目4|栏目5|栏目6|第7栏|栏目8|栏目9|栏目10|
| --------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|
| 大国家1|数据列|质量重量|列名相同|ItemColumn| xyz|||状态|1|
| 见数据|数据列|质量重量|列名相同|ItemColumn| xyz|||状态|二|
| 大国家1|数据列|质量重量|列名相同|ItemColumn| xyz|||状态|三|
| 见数据|数据列|质量重量|列名相同|ItemColumn| xyz|||状态|四|
| 大国家1|数据列|质量重量|列名相同|ItemColumn||AB型||||
| 见数据|数据列|质量重量|列名相同|ItemColumn||AB型||||
| 大国家1|数据列|质量重量|列名相同|ItemColumn||AB型||||
| 见数据|数据列|质量重量|列名相同|ItemColumn||AB型||||
| 阿尔法|数据列|质量重量|不同色谱柱项目|ItemColumn| xyz|||状态|十一|
| AlphBetaa|数据列|质量重量|非常不同的柱项目|ItemColumn||AB型|一个|状态|十二岁|
预期成果:
| 栏目1|栏目2|栏目3|栏目4|栏目5|栏目6|第7栏|栏目8|栏目9|栏目10|
| --------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|--------------|
| 大国家1|数据列|质量重量|列名相同|ItemColumn| xyz| AB型||状态|1|
| 见数据|数据列|质量重量|列名相同|ItemColumn| xyz| AB型||状态|二|
| 大国家1|数据列|质量重量|列名相同|ItemColumn| xyz| AB型||状态|三|
| 见数据|数据列|质量重量|列名相同|ItemColumn| xyz| AB型||状态|四|
| 阿尔法|数据列|质量重量|不同色谱柱项目|ItemColumn| xyz|||状态|十一|
| AlphBetaa|数据列|质量重量|非常不同的柱项目|ItemColumn||AB型|一个|状态|十二岁|
先谢谢你了。
当我尝试Power Query方法时,最后一列不正确。

bq3bfh9z

bq3bfh9z1#

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

  • 选择数据表中的某个单元格
  • Data => Get&Transform => from Table/Range
  • PQ编辑器打开时:Home => Advanced Editor
  • 记下第2行中的表名称
  • 将下面的M代码粘贴到您所看到的位置
  • 将第2行中的Table名称更改回最初生成的名称。
  • 阅读评论并探索Applied Steps以了解算法
    编辑以显示更新的数据样本和结果

鉴于此数据:

M代码

let

//Change next line to reflect actual data source
    Source = Excel.CurrentWorkbook(){[Name="Table7"]}[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", List.FirstN(Table.ColumnNames(#"Changed Type"),5), 
        List.Transform(List.RemoveFirstN(Table.ColumnNames(#"Changed Type"),5), each {_, (t)=>
            List.Distinct(
                List.RemoveNulls(
                    Table.Column(t,_)
                                )
                            ), type list})),

//Expand All Lists
    #"Expanded Lists" = List.Accumulate(
        List.RemoveFirstN(Table.ColumnNames(#"Grouped Rows"),6),
        Table.ExpandListColumn(#"Grouped Rows",Table.ColumnNames(#"Grouped Rows"){5}),
        (state, current)=> Table.ExpandListColumn(state,current)),

//Set data types
    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Lists",{{"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", Int64.Type}}),

//sort Column10 as shown in your example output
    #"Sorted Rows" = Table.Sort(#"Changed Type1",{{"Column10", Order.Ascending}})

in 
    #"Sorted Rows"

输出

相关问题