This has some assumptions about the worksheets and number of criteria
Final formatting, etc. is left as a homework assignment
Option Explicit
Sub GenerateRunningTotals()
Dim wsRunning As Worksheet, ws As Worksheet
Dim rDest As Range, rRunning As Range, rRunning1 As Range
Dim r As Long, c As Long
Application.ScreenUpdating = False
'init
Set wsRunning = Worksheets("RunningTotals")
wsRunning.Cells(1, 1).CurrentRegion.EntireColumn.ClearContents
'stack the year sheets
For Each ws In Worksheets
If ws Is wsRunning Then GoTo NextSheet
Set rDest = wsRunning.Cells(wsRunning.Rows.Count, 1).End(xlUp)
If rDest.Row <> 1 Then Set rDest = rDest.Offset(1, 0)
ws.Cells(1, 1).CurrentRegion.Copy rDest
NextSheet:
Next
'delete almost all headers that were copied
Set rRunning = wsRunning.Cells(1, 1).CurrentRegion
With rRunning
For r = .Rows.Count To 2 Step -1
If Len(.Cells(r, 1).Value) = 0 Then .Rows(r).EntireRow.Delete
Next r
End With
'reset rRunning since we deleted rows
Set rRunning = wsRunning.Cells(1, 1).CurrentRegion
Set rRunning1 = rRunning.Cells(2, 1).Resize(rRunning.Rows.Count - 1, 1)
'sort by name
With wsRunning.Sort
.SortFields.Clear
.SortFields.Add Key:=rRunning1, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange rRunning
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'sum into name from bottom up
With rRunning
For r = .Rows.Count To 3 Step -1
If .Cells(r, 1).Value = .Cells(r - 1, 1).Value Then ' same name
For c = 2 To 10 ' merge critera
.Cells(r - 1, c).Value = .Cells(r - 1, c).Value + .Cells(r, c).Value
Next c
.Rows(r).EntireRow.Delete
End If
Next r
End With
'cleanup
wsRunning.Cells(1, 1).CurrentRegion.EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Done"
End Sub