Excelにて指定した範囲のデータをコピーし、指定したセルから3行置きに挿入していきたいです。

以前にも似たような質問 http://q.hatena.ne.jp/1416819276 はしたのですが。
Excelで今、A列からAM列に5万行ぐらいデータが入っています。
この状況におきまして、4行目から45行目のデータを、関数も含めてコピーしまして。
それを、49行目の真下、52行目、55行目、58行目、61行目の真下・・・と、49行目を起点に、3行置きにコピーしたデータを挿入していきたいのです。
これを実現できるマクロ等、ご存知でしたらお教えいただけますと幸いです。
よろしくお願い致します。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2017/10/06 01:09:09
  • 終了:2017/10/09 17:31:03

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4619ベストアンサー獲得回数19552017/10/08 07:58:44

ポイント1600pt

対象のシートを選択した状態で、copy_rows サブルーチンを実行してください。

Sub copy_rows()
    row_s = 4           ' コピー元開始行
    row_e = 45          ' コピー元終了行
    row_dest = 49       ' コピー先開始行
    copy_step = 3       ' コピー先増分

    last_row = Cells(Rows.Count, 1).End(xlUp).Row
    n = Application.RoundDown((last_row - row_dest) / copy_step, 0) + 1

    row_dest = row_dest + 1
    n_copy = row_e - row_s + 1

    For i = 1 To n
        Range(row_s & ":" & row_e).Copy
        Range(row_dest & ":" & row_dest + n_copy).Insert
        row_dest = row_dest + n_copy + copy_step
        DoEvents
    Next

End Sub

こういうことが、今後、何回あるか分かりませんが、基準になる数字を先頭の方にまとめてみました。
シートのコピーとかしてませんので、バックアップを取ってから実行してください。

動作が完了するまでかなり時間がかかることは、前回の質問でご承知だと思うので、しばらく辛抱してください。
一応、DoEvents をループに入れているので、実行中に他のシートやブックを触ることは、できなくはありません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません