我有一个列中包含Name的Excel数据和下一列中的Product。我想将其更改为一种新格式,在该格式中,产品将出现在相同名称的相邻单元格中,而不是在其他行中。例如。从:
Name1 Product1
Name1 Product2
Name2 Product1
Name3 Pr0duct4
Name3 Product6
Name3 Product1
要:
Name1 Product1 Product2
Name2 Product1
Name3 Product1 Product4 Product6
如何做到这一点?
答案 0 :(得分:0)
假设:
名称位于A列,从第1行开始(无标题)
产品位于B列,从第1行开始(无标题)
数据右侧没有其他数据,因为代码会删除整行。
按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(转置)