将数据格式从单个行更改为单个行

时间:2016-05-03 12:41:25

标签: excel

我有一个列中包含Name的Excel数据和下一列中的Product。我想将其更改为一种新格式,在该格式中,产品将出现在相同名称的相邻单元格中,而不是在其他行中。例如。从:

Name1  Product1
Name1  Product2
Name2  Product1
Name3  Pr0duct4
Name3  Product6
Name3  Product1

要:

Name1 Product1 Product2
Name2 Product1
Name3 Product1 Product4 Product6

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

假设:

  1. 名称位于A列,从第1行开始(无标题)

  2. 产品位于B列,从第1行开始(无标题)

  3. 数据右侧没有其他数据,因为代码会删除整行。

  4. 按Alt + F11,插入新模块,粘贴下面的代码,根据您的工作表更改它(例如数据在哪一行开始等)并运行它。 (注意:确保包含此数据的工作表是活动工作表,即在运行代码之前单击它。)

        Sub reformat()
    
        Dim firstrow, lastrow, count As Integer
        Dim emptyCell As Range
    
    
            firstrow = 1
            count = 0
    
            With ThisWorkbook.ActiveSheet
    
                lastrow = .Range("A1000000").End(xlUp).Row
    
                For i = firstrow + 1 To lastrow
    
                    If .Range("A" & i) = .Range("A" & i - 1) Then
    
                        Set emptyCell = .Range("A" & i - 1)
                        Do
                        Set emptyCell = emptyCell.Offset(, 1)
                        Loop While Not IsEmpty(emptyCell.Value)
    
                        emptyCell.Value = .Range("B" & i).Value
    
                        .Range("A" & i).EntireRow.Delete
    
                        i = i - 1
                        count = count + 1
    
                        If count + i >= lastrow Then Exit Sub
    
                    End If
    
                Next i
    
            End With
    
        End Sub
    

    请告诉我这是否有帮助,或者您有任何其他问题。

    编辑:如果您没有大量数据,并且按名称排序,则可以更快地手动执行以下操作:复制 - > PasteSpecial(转置)