This macro may do it:
Option Explicit
Sub ReOrganizeTable()
'JBeaucaire (5/14/2010)
'Turns Table data into columnar data
'Adds titles in row1 as a new column of values
Dim LR As Long, Rw As Long, Col As Long, LastCol As Long, CurRw As Long
Application.ScreenUpdating = False
LR = Range("A" & Rows.Count).End(xlUp).Row
Range("B:B").Insert xlShiftToRight
For Rw = LR To 2 Step -1
If Range("D" & Rw) <> "" Then
LastCol = Cells(Rw, Columns.Count).End(xlToLeft).Column
Rows(Rw + 1).Resize(LastCol - 3).Insert xlShiftDown
Range("A" & Rw).Resize(LastCol - 2) = Range("A" & Rw)
Range("B" & Rw).Resize(LastCol - 2).Value = Range("C" & Rw).Resize(LastCol - 2).Value
Range("C" & Rw).Resize(1, LastCol - 2).Copy
Range("B" & Rw).Resize(LastCol - 2).PasteSpecial xlPasteAll, Transpose:=True
Range("C1").Resize(1, LastCol - 2).Copy
Range("C" & Rw).PasteSpecial xlPasteAll, Transpose:=True
Else
Range("C" & Rw).Copy Range("B" & Rw)
Range("C1").Copy Range("C" & Rw)
End If
Next Rw
Range("D1", Cells(Rows.Count, Columns.Count)).ClearContents
Range("B1:C1") = [{"Data","Category"}]
Cells.Columns.AutoFit
Application.ScreenUpdating = True
End Sub
There's a sample workbook here along with other versions of these parse macros:
Rows to Columns - Parse Macros
Bookmarks