|
勝手に想像してコードを書くと、以下のようになるかもしれません。
ただ、もっと大切なことは、表の正しい使い方を実践することです。
こうしたことは、表を複雑にするだけで、悪い方向に進んでいます。
今後、この表を使って分析などに使用するなら、
非常に使い勝手が悪い物になり、手に負えなくなります。
こうしたことは避けた方がいいです。
(1)見出し部分はともかく、データ部分にはセル結合は使わない。
5 リンゴ | 2個
6 リンゴ | 4個
7 リンゴ | 8個
8 みかん | 1個
9 ぶどう | 3個
10 ぶどう | 5個
とすべきです。
(2)同一種類のデータなら、一列で管理すべき。
複数列に分けてしまうと、ソートだとか、削除、追加が発生したときに、
面倒なことになります。
-----------------------------------
使わない方がいいと思うが、一応コードを示しておきます。
こうしたコードにトライするよりも、表の正しい使い方をマスターすることを
勧めます。
Dim r0 As Range
Dim r1 As Range
Dim fromRange As Range
Dim toRange As Range
Sub test()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
'最初の5コをコピー
Set r0 = Range("B2")
Set toRange = Cells(2, 5)
Call myCopy
Do
Set r0 = r1.Offset(1)
Set toRange = toRange.Offset(0, 3)
Call myCopy
If r1.Row >= lastRow Then Exit Do
Loop
End Sub
Function myCopy()
Dim j As Long
Set r1 = r0
For j = 1 To 4
Set r1 = r1.Offset(1)
Next
Set fromRange = Range(r0.MergeArea, r1.MergeArea)
' そのままコピーペイスト
fromRange.Resize(, 2).Copy toRange
End Function
|
|