How about a little macro:
Option Explicit
Sub testme()
Dim CurWks As Worksheet
Dim NewWks As Worksheet
Dim oRow As Long
Dim HowManyCols As Long
Dim iRow As Long
Dim FirstRow As Long
Dim LastRow As Long
Dim iCol As Long
Dim FirstCol As Long
Dim LastCol As Long
Set CurWks = Worksheets("sheet1")
Set NewWks = Worksheets.Add
With CurWks
FirstRow = 2
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
FirstCol = 3
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
HowManyCols = LastCol - FirstCol + 1
NewWks.Range("a1").Resize(1, 4).Value _
= Array("Area", "Category", "Date", "Qty")
oRow = 2
For iRow = FirstRow To LastRow
NewWks.Cells(oRow, "A").Resize(HowManyCols, 1).Value _
= .Cells(iRow, "A").Value
NewWks.Cells(oRow, "B").Resize(HowManyCols, 1).Value _
= .Cells(iRow, "B").Value
NewWks.Cells(oRow, "C").Resize(HowManyCols, 1).Value _
= Application.Transpose(.Range("c1").Resize(1, HowManyCols))
NewWks.Cells(oRow, "d").Resize(HowManyCols, 1).Value _
= Application.Transpose(.Cells(iRow, "c").Resize(1, HowManyCols))
oRow = oRow + HowManyCols
Next iRow
End With
With NewWks
.Range("c1").EntireColumn.NumberFormat = "mm/dd/yyyy"
.Range("d1").EntireColumn.NumberFormat = "#,##0.00"
.UsedRange.Columns.AutoFit
End With
End Sub
If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm