may the VBA be with you

Excel VBAとか業務自動化とか

VBAを使ってロト6のデータを形にする その2

はじめに

前回、

vba-belle-equipe.hatenablog.com

本数字の当り回数を43の数字それぞれでカウントし、表示するところまでいきました。
今回は「ボーナス数字」と「連続ハズレ回数」を出してみます。

コード

こんな感じになりました。

Sub 更新()
  Dim startnum As Long, endnum As Long
  Dim i As Long, j As Long
  Dim hit(1 To 43) As Long
  Dim bonus(1 To 43) As Long
  Dim nohit(1 To 43) As Long
  Dim num As Long
  
  With Sheets("メイン")
    startnum = .Range("C1")
    endnum = .Range("C2")
    .Range("C3") = endnum - startnum + 1
  End With
  
  With Sheets("結果")
    For i = startnum + 1 To endnum + 1
      '連続ハズレ
      For j = 1 To 43
        nohit(j) = nohit(j) + 1
      Next
    
      '本数字
      For j = 2 To 7
        num = .Cells(i, j)
        hit(num) = hit(num) + 1
        nohit(num) = 0  'ハズレリセット
      Next j
      
      'ボーナス数字
      num = .Cells(i, 8)
      bonus(num) = bonus(num) + 1
    Next i
  End With
  
  For i = 6 To 48
    Cells(i, 3) = hit(i - 5)
    Cells(i, 4) = bonus(i - 5)
    Cells(i, 5) = nohit(i - 5)
  Next
  
End Sub

ボーナス数字

単純に

Dim bonus(1 To 43) As Long

と新しい配列を作って、カウントしています。

連続ハズレ回数

こちらは

Dim nohit(1 To 43) As Long

という配列を作り

  • For文の「i」が増える(= 「回」を重ねる)ごとに連続ハズレ回数が1回ずつ増えていく
  • ただし、当たったらその数字のカウントはゼロになる

というふうにしています。

結果

f:id:vba-belle-equipe:20161211174629p:plain

こんな感じです。

27回連続とか、なかなかハズレとんなという感じですが、どうなんでしょうか。
その辺の統計を次回はとってみたいと思います。