| 
    
     |  | コードの一例です。 
 Sub harituke()
 Dim ws1 As Worksheet
 Dim ws2 As Worksheet
 Dim rng As Range
 Dim lastrow As Long
 Dim k As Long
 Dim r As Long
 Dim c As Long
 Dim code As String
 Dim item As String
 
 Set ws1 = Worksheets("Sheet1")
 Set ws2 = Worksheets("Sheet2")
 
 r = 1 - 8  '転記先行番号初期値
 
 lastrow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
 For Each rng In ws1.Range("A2:A" & lastrow)
 code = rng.Offset(0, 1).Value
 item = rng.Offset(0, 2).Value
 If rng.Value = "■" Then
 If k Mod 2 = 0 Then
 r = r + 8
 c = 1
 Else
 c = 5
 End If
 
 ws2.Cells(r, c).Value = code & item
 ws2.Cells(r, c).Resize(8, 4).Merge
 
 k = k + 1
 End If
 Next
 End Sub
 
 コメント:
 (1)変数i は伝統的に、整数、とりわけループ変数に用いられるので、
 その慣習に従ったほうが違和感は少ないです。
 論理的には間違いとは言えないが、普通、こういうiの使い方はしません。
 (2)セル結合が本当に必要か、よく検討したほうが良いです。
 セル結合するとあとあとの処理で色々な困難が待ち構えています。
 できれば避けるべきですね。
 
 
 
 |  |