• 締切済み

複数行を繰り返しコピーする方法を教えて下さい

こんにちは。A1からA50までに値が入っており、それをA51からA100、A100からA150、、、と繰り返し100回くらいコピーしたいのですが、簡単な方法はありますか?   Range("A1:A50").Select Selection.Copy Range("A1").Select Selection.Insert Shift:=xlDown でなんとなくできそうなのですが、100回繰り返す、という指定の仕方がわかりません。よろしくお願いします!

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

既に回答は出ており、それなりに難しいですが、ふと思いついて・・ たとえばA2:C4 A列   B列   C列 a 1 x b 2 y c 3 z これをC4で+ハンドルをだし、「CTRLを押しながら」下へ引っ張ると 繰り返しコピーして a 1 x b 2 y c 3 z a 1 x b 2 y c 3 z a 1 x b 2 y c 3 z a 1 x b 2 y ・・・・ になりました。 VBAでは、たった2行 Sub test01() Range("A2:C4").Select Selection.AutoFill Destination:=Range("A2:C19"), Type:=xlFillCopy End Sub です。 これをA2:C4----->A1:A50 A2:C19------->A1:A5000 にして実行してみてください。うまくいくのではないかと思います。 エクセルの特別な機能をVBAに置き換えたものです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 ご質問を読んで、コードでなぜ挿入を使っているのか分りませんが、下に何かあると予想すると、こういうことかな?挿入を使うというのは、ちょっとややこしいです。上書きがよいなら、単に、AutoFillメソッドだけでよさそうです。 '---------------------------------- Sub TestRefrainCopy() Dim r As Range Const TIMES As Integer = 100 '回数 If TIMES < 1 Then Exit Sub Set r = Range("A1:A50")  r.Offset(r.Count).Resize(r.Rows.Count * TIMES).Insert Shift:=xlDown  r.AutoFill r.Resize(r.Rows.Count * (TIMES + 1)), Type:=xlFillCopy Set r = Nothing End Sub '----------------------------------

  • jindon
  • ベストアンサー率43% (50/116)
回答No.1

Select/Activateは極力避けましょう。トラブルのもとです。 Sub test() Dim i As Long, x As Integer Application.ScreenUpdating = False Range("a1:a50").Copy For i = 1 To 100 Cells(x + 51, 1).PasteSpecial x = x + 50 Next With Application .CutCopyMode = False .ScreenUpdating = True End With End Sub

関連するQ&A