Каждый раз, когда вы обнаруживаете, что повторяете код, вы, вероятно, упускаете возможность l oop.
lr
представляет последнюю использованную строку в Column A
i
представляет текущая строка
c
представляет текущий столбец
Sub Shorter_Better_Faster()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- UPDATE
Dim lr as Long, i As Long, c As Long
lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
c = 2
For i = 501 To lr Step 500
ws.Range(ws.Cells(1, c), ws.Cells(500, c)).Value = ws.Range(ws.Cells(i, 1), ws.Cells(i + 500, 1)).Value
c = c + 1
Next i
ws.Range("A501:A" & lr).ClearContents
End Sub