エクセル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


コメント

このブログの人気の投稿

エクセルマクロをすこし 2018年8月25日 リストから別のリストを作成