やりたいことはA列のデータを15行区切りで横方向に並び替えですよね?
Sub test()
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
TC = 2
For Each l In Range("A18").Resize(MaxRow - 18)
If ((l.Row - 3) Mod 15) = 0 Then
Cells(3, TC).Resize(15).Value = l.Resize(15).Value
TC = TC + 1
End If
Next
Range("A18").Resize(MaxRow - 17).Delete
End Sub
A列最終行まで並び替え後にA18以下を削除しています
こんばんは!
質問のコードをそのままやれば
Sub Sample1()
Dim cnt As Long
For cnt = 1 To 1000
Range("A18:A32").Cut Cells(3, cnt + 1)
Range("A18:A32").Delete Shift:=xlUp
Next cnt
MsgBox "処理完了"
End Sub
といった感じになると思いますが、
これではかなりの時間を要すると思います。
書式を無視して、値だけでよいのであればもっと時間短縮が可能だと思います。
Sub Sample2()
Dim i As Long, cnt As Long, lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 18 To lastRow Step 15
cnt = cnt + 1
Cells(3, cnt + 1).Resize(15).Value = Cells(i, "A").Resize(15).Value
Cells(i, "A").Resize(15).ClearContents
If cnt = 1000 Then Exit For
Next i
Range(Cells(3, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
MsgBox "処理完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
Offsetを使えばいいのでは?
For i = 1 To 1000
Range("A18:A32").Select
Selection.Cut Destination:=Range("A3:A17").Offset(0, i)
Rows("18:32").Select
Selection.Delete Shift:=xlUp
Next i