@p45cal

This might improve speed too:

If colm > 1 Then
    sn= Evaluate("transpose(row(1:" & colm - 1 & "))")
  
    cells(j,5) = Application.Sum(.Index(resultsAry, rw, sn)) 
End If
But you should realise that Evaluat is a very compactly written arrayformula. Arrayformulae do not speed up things in general.