VBA

久しぶりに エクセルで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 件のコメント:

コメントを投稿