Excel 2007 将多行转置/合并为一行

Excel 2007 将多行转置/合并为一行

我有如下数据:

1001NCCN    3618127
1001NCCN    208478
1001NCCN    207316
1001TEMN    409889
1001TEMN    801651
1001TEMN    273134
1001TEMN    208478
1001TEMN    207316

我需要转置/合并第一列中具有匹配值的行,最终结果如下:

1001NCCN    3618127 208478  207316      
1001TEMN    409889  801651  273134  208478  207316

我查看了数据透视表和筛选功能,但它们似乎都无法满足我的需求。有没有办法在 Excel 中做到这一点?

答案1

这是一个 VBA 解决方案

它依赖于类似行的分组,因此如果需要,请先排序

只需选择范围内的第一个单元格并运行...

Sub Mergeitems()
    Dim cl As Range
    Dim rw As Range

    Set rw = ActiveCell

    Do While rw <> ""
        ' for each row in data set
        '   find first empty cell on row
        Set cl = rw.Offset(0, 1)
        Do While cl <> ""
            Set cl = cl.Offset(0, 1)
        Loop

        ' if next row needs to be processed...
        Do While rw = rw.Offset(1, 0)
            cl = rw.Offset(1, 1)       ' move the data
            Set cl = cl.Offset(0, 1)   ' update pointer to next blank cell
            rw.Offset(1, 0).EntireRow.Delete xlShiftUp   ' delete old data
        Loop

        ' next row
        Set rw = rw.Offset(1, 0)
    Loop
End Sub

答案2

我认为执行此类任务最简单的方法是使用 Google 文档。将数据复制到空白的 Google 电子表格中。然后在 F1 处写入:

=UNIQUE(A:A) 

在 G1 处写入:

=TRANSPOSE(FILTER(B:B,A:A=F1)

并复制下来。然后复制结果并将其粘贴回 Excel。

相关内容