'This program works like a the paste transpose tool, except we are trading column headers with worksheets, and worksheets with column names.
Sub ColumntoWorksheet()
Dim colHeader, numSheets, colPaste As Integer
Dim NewWS, shtLastYr, shtCurrent As Worksheet
Dim ShtName As String
Set shtLastYr = Sheets(4)
For colHeader = 4 To Sheets(1).UsedRange.Columns.Count
'create new worksheet with column header as the name
ShtName = Sheets(1).Cells(1, colHeader).Value
Set NewWS = Sheets.Add
NewWS.Name = ShtName
NewWS.Move After:=Sheets(Sheets.Count)
'Copy template text from 2007 to new sheet columns a, b and c
shtLastYr.Cells(1, 1).EntireColumn.Copy Destination:=NewWS.Cells(1, 1)
shtLastYr.Cells(1, 2).EntireColumn.Copy Destination:=NewWS.Cells(1, 2)
shtLastYr.Cells(1, 3).EntireColumn.Copy Destination:=NewWS.Cells(1, 3)
colPaste = 4 'sets the initial column to paste to as 4, then once loop begins will increment
For numSheets = 1 To 4 'iterates through each year
Set shtCurrent = Sheets(numSheets)
shtCurrent.Cells(1, colHeader).EntireColumn.Copy Destination:=NewWS.Cells(1, colPaste)
colPaste = colPaste + 1
shtCurrent.Cells(1, colHeader).Offset(0, 1).EntireColumn.Copy Destination:=NewWS.Cells(1, colPaste)
colPaste = colPaste + 1
Next numSheets
colHeader = colHeader + 1
Next colHeader
End Sub