|
こんにちは。
▼Copy元範囲のアドレス
> 【sheets(1)データ】
> 11行のデータのセル場所 【R11:Y11】,【AA11:AH11】,【AJ11:AQ11】
> 15行のデータのセル場所 【R15:Y15】,【AA15:AH15】,【AJ15:AQ15】
> 19行のデータのセル場所 【R19:Y19】,【AA19:AH19】,【AJ19:AQ19】
> 23行のデータのセル場所 【R23:Y23】,【AA23:AH23】,【AJ23:AQ23】
:
上の4行は、こういう風にも考えられませんか?
[R11]を基点として【A1:H1】,【J1:Q1】,【S1:Z1】
【A5:H5】,【J5:Q5】,【S5:Z5】、
[R19]を基点として【A1:H1】,【J1:Q1】,【S1:Z1】
【A5:H5】,【J5:Q5】,【S5:Z5】、
つまり、2行を1ブロックと考えると、起点セルの座標が単調増加するだけで、
Copy範囲の相対位置はどのブロックでも同じ、ということ。
'コピー先についても同じ。
Sub Try1()
Dim r As Range
Dim c As Range
Set r = Worksheets(1).[R11] '最初のCopyブロック基点セル
Set c = Worksheets(2).[C5] '最初のPaste先セル
Do
BlockCopy r, c
Set r = r.Offset(8) 'つぎのブロック先頭へ
Set c = c.Offset(16)
Loop Until r.Row > 1207
End Sub
Private Sub BlockCopy(ByVal r As Range, ByVal c As Range)
With r
.Range("A1:H1").Copy
c.Range("A1").PasteSpecial xlValues, Transpose:=True
.Range("J1:Q1").Copy
c.Range("C1").PasteSpecial xlValues, Transpose:=True
.Range("S1:Z1").Copy
c.Range("F1").PasteSpecial xlValues, Transpose:=True
.Range("A5:H5").Copy
c.Range("I1").PasteSpecial xlValues, Transpose:=True
.Range("J5:Q5").Copy
c.Range("K1").PasteSpecial xlValues, Transpose:=True
.Range("S5:Z5").Copy
c.Range("N1").PasteSpecial xlValues, Transpose:=True
End With
End Sub
|
|