Perhaps you mean change:
Cells(i + 1, iCol).Formula = "=SUM(R" & j & "C:R" & [i] & "C)"
to:
Cells(i + 1, iCol).Formula = "=SUM(R[" & j - i - 1 & "]C:R[-1]C)"
If that's the case then it would be faster to:
Dim iCol As Long
Dim i As Long
Dim j As Long
i = 3
j = i
'Sort the data so like data is grouped together.
Range("A5").CurrentRegion.Offset(1).Sort Range("A12"), 1
'Loops throught Col A Checking for match then when there is no match add Sum
Do While Range("A" & i) <> ""
If Range("A" & i) <> Range("A" & (i + 1)) Then
Rows(i + 1).Insert
Range("A" & (i + 1)) = "Subtotal " & Range("A" & i).Value
Range(Cells(i + 1, 13), Cells(i + 1, 73)).FormulaR1C1 = "=SUM(R[-4]C:R[-1]C)"
Range(Cells(i + 1, 1), Cells(i + 1, 73)).Font.Bold = True
i = i + 2
j = i
Else
i = i + 1
End If
Loop
Also you can do something very similar with the built-in Subtotal method:
Range("A5").CurrentRegion.Offset(1).Sort Range("A12"), 1
Range("A5").CurrentRegion.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(13, 14, 15 _
, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, _
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, _
68, 69, 70, 71, 72, 73), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
or shorter still:
Range("A5").CurrentRegion.Offset(1).Sort Range("A12"), 1
Range("A5").CurrentRegion.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=[column(M:BU)], Replace:=True, PageBreaks:=False, SummaryBelowData:=True