Sub ShiftUpEmptyCells()
Dim List As Worksheet
Set List = Excel.ActiveWorkbook.Worksheets("list")
' Пробегаем столбец "A" с конца и ищем первую непустую строку
For I = Rows.Count To 1 Step -1
If Not IsEmpty(List.Cells(I, 1)) Then
' Продолжаем пробегать от найденной, но уже удаляя пустые ячейки со сдвигом вверх
For J = I To 1 Step -1
If IsEmpty(Cells(J, 1)) Then
Cells(J, 1).Delete shift:=xlUp
End If
Next J
Exit For
End If
Next I
End Sub