Eu provavelmente abordaria seu problema geral (mesclando linhas) com uma macro totalmente diferente, mas aqui estão as linhas que você pode alterar em seu código:
cl = rw.Offset(1, 1) ' move the data
Set cl = cl.Offset(0, 1) ' update pointer to next blank cell
rw.Offset(1, 0).EntireRow.Delete xlShiftUp ' delete old data
Tente substituí-los por isso:
i = 1
Do While rw.Offset(1, i) <> ""
cl = rw.Offset(1, i)
Set cl = cl.Offset(0, 1)
i = i + 1
Loop
rw.Offset(1, 0).EntireRow.Delete xlShiftUp 'delete old data
Resultado: