|
おはようございます。
提示コードは、最初の文字群に番号が振られないというところはありますが
それはさておき。
B1 に =IF(A1="","",1)
B2 に =IF(A2="","",IF(A2=A1,B1+1,1))
この B2 を下にフィルコピー。
これで求める結果がでますね。
この操作をそのままマクロ化して、最後に B列を数式から値変換。
これが1つの方法ですね。
あるいは、上記の数式がやっている判断と処理、これをVBAコード化する手もあります。
Sub Test1()
If Not IsEmpty(Range("A1")) Then
Range("B1").Value = 1
Else
Range("B1").ClearContents
End If
With Range("A2", Range("A" & Rows.Count).End(xlUp)).Offset(, 1)
.Formula = "=IF(A2="""","""",IF(A2=A1,B1+1,1))"
.Value = .Value
End With
End Sub
Sub Test2()
Dim c As Range
If Not IsEmpty(Range("A1")) Then
Range("B1").Value = 1
Else
Range("B1").ClearContents
End If
For Each c In Range("A2", Range("A" & Rows.Count).End(xlUp))
If IsEmpty(c) Then
c.Offset(, 1).ClearContents
Else
If c.Value <> c.Offset(-1).Value Then
c.Offset(, 1).Value = 1
Else
c.Offset(, 1).Value = c.Offset(-1, 1).Value + 1
End If
End If
Next
End Sub
|
|