例に挙げられているのが、毎回1レコード分だけで、同じ場所にコピーするのであれば、エクセルマクロの自動記録で記録しておけば、毎回使えます。
しかしレコード数が可変で、コピー先も前回処理分の次からコピーしたいといかであれば、自分で組む必要があります。
例えば、Sheet1に
A1=日付1
B2=名前1
C3=用件1
A4=日付2
B5=名前2
C6=用件2
A7=日付3
B8=名前3
C9=用件3
というレコードが存在して、これをsheet2へ1行にしてコピーしたいとします。
件数固定で、コピー先が毎回1行目からで良いのであれば下のような例が挙げられます。
Sub A()
回数 = 3 '繰り返す回数
開始 = 1 'コピーする塊の最初の行番号
間隔 = 3
コピー先日付 = "A"
コピー先名前 = "B"
コピー先用件 = "C"
Application.ScreenUpdating = False
Application.Calculation = xlManual
For カウンタ = 開始 To 回数 '開始行から回数分繰り返す
日付 = (カウンタ * 3) - 2
セル = "A" & 日付
Sheets("sheet1").Select
Range(セル).Select
Selection.Copy
セル番号 = コピー先日付 & カウンタ
Sheets("sheet2").Activate
Range(セル番号).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False
名前 = (カウンタ * 3) - 1
セル = "B" & 名前
Sheets("sheet1").Activate
Range(セル).Select
Selection.Copy
セル番号 = コピー先名前 & カウンタ
Sheets("sheet2").Activate
Range(セル番号).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False
用件 = カウンタ * 3
セル = "C" & 用件
Sheets("sheet1").Activate
Range(セル).Select
Selection.Copy
セル番号 = コピー先用件 & カウンタ
Sheets("sheet2").Activate
Range(セル番号).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False
Next
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
あまり良い例ではありませんが、このような形でも実行が可能になります。
お礼
書き込み遅くなりすみません。 ご丁寧に教えていただいてありがとうございます<m(__)m> でも自分でVBAも理解して作らないとダメだな~と感じています。 こんなに丁寧に教えていただきましたが、やはりよくわかりません。 人任せではなく、自分で勉強して理解しないと応用もききませんよね? 書き込みしてもらったのを参考に自分でやってみます。 ありがとうございました。