久しぶりに エクセルでVBAを使わなければならなくなった。
いま、すこし大きなルーチン設計しているのだが、その一部(手始め)として抽選のルーチンを考えてみる。非常に簡単なものだが、一つ作っておくと便利だ。
下のプロシージャは、応募者数(B1に入力される)と定数(B2)を読み取って、乱数を使って当落を決定し、書き出すというものだ。超簡単だが、これを書くうちにいろいろな書式を思い出してくるからおもしろい。
Sub Chusen()
'準備
Dim Sosu As Integer
Dim Teisu As Integer
Dim Kuji As Integer
Dim Kariban(1000) As Integer
Dim N As Integer
Dim Tosen(1000) As Integer
'総数と定数の読み取り
Sosu = Range("B1")
Teisu = Range("B2")
'以前のデータをクリア
Columns("D:F").Select
Selection.ClearContents
Range("A1").Select
'仮番号の初期設定
For i = 1 To Sosu
Kariban(i) = i
Next
'くじ引き、定数回のくじ引き
N = Sosu
For i = 1 To Teisu
Kuji = WorksheetFunction.RandBetween(1, N)
T = Kariban(Kuji)
Tosen(T) = 1
'仮番号の振り直し
For k = Kuji To N - 1
Kariban(k) = Kariban(k + 1)
Next k
N = N - 1
Next i
' 書き出し
Cells(1, 4).Value = " 一連番号 "
Cells(1, 5).Value = " 当 落"
Cells(1, 6).Value = " 当選者累計"
Ruikei = 0
For i = 1 To Sosu
Cells(i + 1, 4).Value = i
Cells(i + 1, 5).Value = Tosen(i)If Tosen(i) = 1 Then Ruikei = Ruikei + 1: Cells(i + 1, 6).Value = Ruikei
Next
End Sub
0 件のコメント:
コメントを投稿