- 締切済み
複数行を繰り返しコピーする方法を教えて下さい
こんにちは。A1からA50までに値が入っており、それをA51からA100、A100からA150、、、と繰り返し100回くらいコピーしたいのですが、簡単な方法はありますか? Range("A1:A50").Select Selection.Copy Range("A1").Select Selection.Insert Shift:=xlDown でなんとなくできそうなのですが、100回繰り返す、という指定の仕方がわかりません。よろしくお願いします!
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
既に回答は出ており、それなりに難しいですが、ふと思いついて・・ たとえば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)
こんにちは。 ご質問を読んで、コードでなぜ挿入を使っているのか分りませんが、下に何かあると予想すると、こういうことかな?挿入を使うというのは、ちょっとややこしいです。上書きがよいなら、単に、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)
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