• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロで行を変えて千回カット&ぺースト)

エクセルマクロで行を変えて千回カット&ぺースト

このQ&Aのポイント
  • エクセルマクロで行を変えて千回カット&ぺーストする方法について教えてください。
  • エクセルマクロで指定した範囲の行を連続してカット&ぺーストする方法を教えてください。
  • エクセルマクロで行の範囲を複数回変えた上でカット&ぺーストする方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • weboner
  • ベストアンサー率45% (111/244)
回答No.4

やりたいことは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以下を削除しています

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です。 投稿後もう一度コードを読み返してみました。 行すべてを削除しなくてはならないのですね? その場合は前回のSample2のコードの >Range(Cells(3, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp の行を >Range(Cells(3, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp に変更してみてください。 Sample1の場合は > Range("A18:A32").Delete Shift:=xlUp が > Rows("18:32").Delete Shift:=xlUp とします。 どうも失礼しました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 質問のコードをそのままやれば 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

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

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