エクセルVBA 適当に乱数を発生させ座席表を作成する
\(^o^)/
高校時代に先生がパソコンで座席表を作成していた、、席順までVBA??かその他のツールで作ってそれに基づいて1っヶ月過ごした経験をふと思い出してならどうやるかを頭の中で趣味レーションしてみた。
違うと思うけど、、
で取り敢えず思いつきで作り実用性が個人的にはまったくないのですが座席の番号を一度乱数で決定し、そして個人に対しても乱数を発生っさせて。。。ここまでがVBA処理
そこをワークシート上でXlookupやVlookup関数で紐付けして一応完成、、、、
適当な割には満足しています。
なお処理をする段階で一度乱数発生場所の2箇所クリアして初期化を図っています、
(ΦωΦ) デッデカイ!(;ΦωΦ)o/ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ >゜))))彡
40人分を想定してます。また乱数の数値の範囲は200までとしておきました。
あとはちょこちょこ動かせばとりあえずはいいのではないかなと思います。
なお、初稿時においはXlookupはマイクロソフト社のサブスクリプション
のサービスを受けてないと多分使えなかったので、、閲覧していただいている段階ではどうなっているかわからないけれど注意してください。ファイル公開していないので関係ないと思いますけどね。。。。
Bye♪ ヾ('-'*)ヾ(*'ー'*)ノ(*'-') /~ Bye♪
----------------------------------------------------------------------------
Sub Randomizing()
Sheets("席リスト").Select
Range("bbb[乱数]").Select
Selection.ClearContents
Sheets("名前リスト").Select
Range("sss[乱数]").Select
Selection.ClearContents
Dim MaxNum As Long
Dim flg() As Boolean
Dim num As Long
Dim i As Long
Dim Number() As Long
MaxNum = 200
ReDim Number(1 To MaxNum) As Long
ReDim flg(1 To MaxNum) As Boolean
Randomize
For i = 1 To MaxNum
Do
num = Int(Rnd * MaxNum) + 1
If flg(num) = False Then
flg(num) = True
Number(i) = num
Exit Do
End If
Loop
Next i
For j = 2 To 41
Cells(j, 2).Value = Number(j)
Next
Sheets("席リスト").Select
MaxNum = 200
ReDim Number(1 To MaxNum) As Long
ReDim flg(1 To MaxNum) As Boolean
Randomize
For i = 1 To MaxNum
Do
num = Int(Rnd * MaxNum) + 1
If flg(num) = False Then
flg(num) = True
Number(i) = num
Exit Do
End If
Loop
Next i
For j = 2 To 41
Cells(j, 2).Value = Number(j)
Next
Sheets("席順").Select
End Sub
コメント
コメントを投稿