|
▼kanabun さん:
>> できるならば、並べる部活動のグループの並べる順番までもコントロールしたいのですが。
>部活動の名称ははじめから決まっていて、その並び順も決まっているということ
なら、
【Order】というシートのA列に
[1] バスケ部
[2] バレー部
[3] テニス部
[4] 野球部
のように、部活名を並べたい順にリストしておいてください。
対象シートを選択して、実行です。
Sub Try3()
Dim dic As Object
Dim i As Long, k As Long, n As Long
Dim v, vv, sp
Dim ss As String
Dim c As Range
Set dic = CreateObject("Scripting.Dictionary")
For Each c In Worksheets("Order").Cells(1) _
.CurrentRegion.Resize(, 1)
i = i + 1
dic(c.Value) = i
Next
With Cells(1).CurrentRegion
v = .Value
n = UBound(v)
ReDim vv(1 To n + dic.Count, 0)
For i = 1 To n
ss = v(i, 1)
vv(i, 0) = dic(ss)
Next
For i = n + 1 To n + dic.Count
k = k + 1
vv(i, 0) = k
Next
End With
Range("C1").Resize(n + dic.Count).Value = vv
With Cells(1).CurrentRegion
.Sort Key1:=.Columns(3), Header:=xlNo
.Columns(3).Clear
.Resize(, 2).SpecialCells(xlConstants) _
.BorderAround xlContinuous
End With
End Sub
|
|