拙著をご購入いただき、ありがとうございます。 お知りになりたいことが掲載されていなくてということですが、今後、別件の開発などに役立てていただければ幸いです。
あなたがなさりたいことは、左図のとおりでしょうか。
やりたい操作の 1. と 2. はマクロの自動記録で出来ますから、すでに、おやりになって、下記のようなマクロが出来ているかと思います。
Sub Macro1()
Range("A20").Select
Selection.Copy
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("A39").Select
Application.CutCopyMode = False
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
このマクロが原型ですから、これを繰り返し処理で行えるよう、下記のように改造します。
Sub Macro12()
貼付行 = 0
For コピー行 = 20 To 39 Step 19
貼付行 = 貼付行 + 1
Range("A" & コピー行).Select
Selection.Copy
Range("D" & 貼付行).Select
Selection.PasteSpecial Paste:=xlPasteFormulas
Next
End Sub
次の改造は、やりたいこと 3. の「対象列にデータがなくなるまで繰り返し」できるようにする機能を追加します。
ついでに、自動記録されたコピー貼り付け関係のコードを整理しておくと、見やすくなります。
Sub Macro13()
下端行 = Range("A65536").End(xlUp).Row
貼付行 = 0
For コピー行 = 20 To 下端行 Step 19
貼付行 = 貼付行 + 1
Range("A" & コピー行).Copy
Range("D" & 貼付行).PasteSpecial Paste:=xlPasteFormulas
Next
End Sub
以上が回答になりますが、拙著 290〜292ページに「データ件数取得と繰り返し処理と・・」と題する解説がありますから参考にして、改造した各コードの意味をご理解ください。
|