人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●1600ポイント ベストアンサー

対象のシートを選択した状態で、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 をループに入れているので、実行中に他のシートやブックを触ることは、できなくはありません。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ