In case you didn't get an answer on the other forums
Option Explicit
Sub OnceAgain_WithFeeling()
Dim rData As Range, rSort As Range, rSort1 As Range
Dim wsData As Worksheet, wsOut As Worksheet
Dim iRow As Long, iCol As Long, iOut As Long
Application.ScreenUpdating = False
Set wsData = ActiveSheet
Set rData = wsData.Cells(1, 1).CurrentRegion
Application.DisplayAlerts = False
On Error Resume Next
Worksheets(wsData.Name & "_List").Delete
On Error GoTo 0
Application.DisplayAlerts = True
Worksheets.Add.Name = wsData.Name & "_List"
Set wsOut = Worksheets(wsData.Name & "_List")
iOut = 1
With wsOut
.Cells(iOut, 1).Value = "Cost Center"
.Cells(iOut, 2).Value = "Account"
.Cells(iOut, 3).Value = "Amount"
iOut = iOut + 1
For iRow = 2 To rData.Rows.Count
For iCol = 2 To rData.Columns.Count
.Cells(iOut, 1).Value = rData.Cells(iRow, 1).Value
.Cells(iOut, 2).Value = rData.Cells(1, iCol).Value
.Cells(iOut, 3).Value = rData.Cells(iRow, iCol).Value
iOut = iOut + 1
Next iCol
Next iRow
Set rSort = .Cells(1, 1).CurrentRegion
Set rSort1 = rSort.Cells(2, 1).Resize(rSort.Rows.Count - 1, rSort.Columns.Count)
With .Sort
.SortFields.Clear
.SortFields.Add Key:=rSort1.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=rSort1.Columns(2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange rSort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
.Range("A2").Select
ActiveWindow.FreezePanes = True
.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
End Sub