Это динамично как по строкам, так и по столбцам.
Предполагается, что Column A
на обоих листах является хорошим индикатором того, где можно найти последнюю строку.
Sub Columns()
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")
Dim LR As Long, LC As Long, LR2 As Long, Counter As Long, CopyRange As Range
LR = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
LC = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
LR2 = ws2.Range("A" & ws2.Rows.Count).End(xlUp).Offset(1).Row
Counter = 1
Application.ScreenUpdating = False
For i = 1 To LC Step 3
ws1.Range(ws1.Cells(2, i), ws1.Cells(LR, i)).Copy
ws2.Cells(LR2, Counter).PasteSpecial xlPasteValues
Counter = Counter + 1
Next i
Application.ScreenUpdating = True
End Sub