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