Hi there,
Here is some code which does the grouping you require. Please note that I haven't bother with the formatting which I am hoping you should be able to do (using the macro recorder if necessary). If not let us know.
Sub GroupData()
Dim rCurrentRange As Range
Dim sGroupName As String
Dim ii As Integer
Columns("A:A").Delete Shift:=xlToLeft
Columns("A:A").Cut
Columns("D:D").Insert Shift:=xlToRight
Set rCurrentRange = Cells(2, "A")
While rCurrentRange.Offset(1, 0) <> ""
ii = 1
rCurrentRange.EntireRow.Insert
sGroupName = rCurrentRange.Value
rCurrentRange.Offset(-1, 0).Value = sGroupName
While rCurrentRange.Offset(ii - 1, 0).Value = sGroupName
rCurrentRange.Offset(ii - 1, 0).Value = ""
ii = ii + 1
Wend
Set rCurrentRange = rCurrentRange.Offset(ii - 1, 0)
Wend
End Sub
Cheers,
Andrew