|
▼ひろし さん:
マルチですか? あまり気分のいいもんじゃないですね
先ほどのコード、すこし修正(simple化)しました。
Sub Try2()
Dim dic As Object
Dim i As Long, k As Long, n As Long
Dim v, vv, sp
Dim ss As String
Set dic = CreateObject("Scripting.Dictionary")
With Cells(1).CurrentRegion
v = .Value
n = UBound(v)
ReDim vv(1 To n, 0)
ReDim sp(1 To n, 0)
For i = 1 To n
ss = v(i, 1)
If Not dic.Exists(ss) Then
k = k + 1
vv(i, 0) = k
sp(k, 0) = k
dic(ss) = k
Else
vv(i, 0) = dic(ss)
End If
Next
End With
With Range("C1") '作業列にグループ番号を書き込む
.Resize(n).Value = vv
.Offset(n).Resize(k).Value = sp
End With
With Cells(1).CurrentRegion
.Sort Key1:=.Columns(3), Header:=xlNo
.Columns(3).Clear
.Resize(, 2).SpecialCells(xlConstants) _
.BorderAround xlContinuous
End With
End Sub
現在は、出現順に、グループ化しています。
> できるならば、並べる部活動のグループの並べる順番までもコントロールしたいのですが。
これは、現在、考慮していません。
部活動の名称ははじめから決まっていて、その並び順も決まっているということですか?
|
|