|
コードの一例です。
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)セル結合が本当に必要か、よく検討したほうが良いです。
セル結合するとあとあとの処理で色々な困難が待ち構えています。
できれば避けるべきですね。
|
|