Guy,
Give this macro a try:
Sub SKUTranspose()
Application.ScreenUpdating = False
Dim ThisSKU As String: ThisSKU = vbNullString
Dim rngSKU As Range: Set rngSKU = ActiveSheet.Range("A2:" & Cells(Rows.Count, 1).End(xlUp).Address)
Application.CutCopyMode = False
ActiveSheet.Range("A1:C1").Copy
ActiveSheet.Range("D1:F1").PasteSpecial xlPasteAll
ActiveSheet.Range("D1:F1").PasteSpecial xlPasteColumnWidths
Application.CutCopyMode = False
Dim aCell As Range, rngDest As Range
For Each aCell In rngSKU
If aCell.Value <> ThisSKU Then
ThisSKU = aCell.Value
Set rngDest = ActiveSheet.Range("D" & Rows.Count).End(xlUp).Offset(1, 0)
rngDest.Value = ThisSKU
rngDest.Offset(0, 1).Value = aCell.Offset(0, 1).Value
rngDest.Offset(0, 2).Value = aCell.Offset(0, 2).Value
Else
Set rngDest = ActiveSheet.Range("D" & Rows.Count).End(xlUp)
ActiveSheet.Cells(rngDest.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Value = aCell.Offset(0, 1).Value
ActiveSheet.Cells(rngDest.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Value = aCell.Offset(0, 2).Value
End If
Next aCell
ActiveSheet.Range("A1:C1").EntireColumn.Delete xlShiftToLeft
ActiveSheet.UsedRange.EntireColumn.ColumnWidth = 45
ActiveSheet.Range("A1").EntireColumn.ColumnWidth = 10
Application.ScreenUpdating = True
End Sub
Hope that helps,
~tigeravatar
Bookmarks