
ランダムな席順に名前を入れる Excel2013 マクロ講座 80回
ランダムな席替えの名前版になります。前回(2013_macro_79.htm)は、席に生徒番号をランダムに割り当てるというものでした。
番号を割り当てるのでは、そっけないという場合や、番号を忘れた生徒はどうするのか、などという問題が起こるかもしれません。
そこで、今回は座席に名前を表示するというタイプの席変え版です。
(サンプルファイルは、こちらから マクロ80回サンプルデータ)


Public sheetobj1 As Worksheet 'ワークシートを代入するオブジェクト変数
Public sheetobj3 As Worksheet '〃
Sub 乱数発生して順番() 'ランダムな値を発生させる
Dim ra As Integer '行数をカウントする変数
Set sheetobj3 = ThisWorkbook.Worksheets("sekijyun3")
With sheetobj3
For ra = 2 To 41 '2行目から最終行まで
.Cells(ra, 3).Value = Rnd '3列目に乱数を発生させる
Next
For ra = 2 To 41 '4列目に大きい順からの番号をつける
.Cells(ra, 4).Value = WorksheetFunction.Rank(.Cells(ra, 3).Value, .Range("C2:C41"), 0)
Next ra
End With
End Sub
乱数を
発生させた後に隣のD列に乱数の大きさによる順位を取得しています。これには、Rank メソッドを利用しています。

Sub 並べ替えSORT()
Set sheetobj3 = ThisWorkbook.Worksheets("sekijyun3")
With sheetobj3 '並べ替え条件の設定
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("D2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
With sheetobj3.Sort '並べ替えの実行
.SetRange Range("A1:D41")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
コードを実行すると、下図のようになります。