趣味のエクセルマクロ

ナンバーズ4などの数字選択式宝くじデータ分析用の自作マクロおよびナンバーズ4の各種データリストなどをブログにしています。

マクロ作成方法 4 (ナンバーズペア数字集計(重複有))


上の様な表にボックス番号でのペア数字の集計をします。




考え方としては、たとえばボックス番号123や1234の場合のペア数字


 ・123はペア数字は 12、13、23になります。


 ・1234は同じように 12,13,14,23,24,34となります。



作成マクロとしては下記の順番になると思います。


・番号を分解する。


・小さい順に並べる。


・ペア数字を設定する。


・ペア数字を集計する。(表に出力も含む)




但し、1123の1ように同じ数字2ヶ以上の時の重複を計算しないようにするには


ペア数字の設定部分のマクロ作成がすこし難しい気がします。


(全部違う数字のシングルの場合は重複無なので問題はないですが?)



・1123はペアは11、12、13、12,、13、23 ですが12、13が重複してます。


 12、13の集計を1回で終わらせるにはどうしたら良いかを考える事ですね。


・2255は22、25、25、25、25、55 で 25 が重複


・3335は33、33、35、33、35、35 で 33、35 が重複


・5555は55、55、55、55、55、55 で 55 だけで重複



以上の事から当選番号のタイプによって細かく条件を設定しなければ重複無のマクロは


作れない気がします。このへんがマクロ作成の難しさかも知れません。


(重複有の場合はペア設定マクロは共通ですから非常に楽だと思います。)







       < N4ボックスペア集計(重複あり)>


Sub n4bx_pea()  'ナンバーズボックスペア集計 (重複あり)
Dim xa, ya, i, j, k, l,deme(4) As Integer


 Sheets("出現数").Select
  Range("gh5:gq14").Select  
    Selection.ClearContents


i = 4
Call saikeisanoff ’再計算等を中止  マクロ作成方法  1 と同様


Do Until Sheets("ストレートパターン").Cells(i, 3) = ""
   Cells(1, 190) = Val(Left(Sheets("ストレートパターン").Cells(i, 3), 1)) ’GH1セルの部分
   Cells(1, 191) = Val(Mid(Sheets("ストレートパターン").Cells(i, 3), 2, 1))
   Cells(1, 192) = Val(Mid(Sheets("ストレートパターン").Cells(i, 3), 3, 1))
   Cells(1, 193) = Val(Right(Sheets("ストレートパターン").Cells(i, 3), 1)) 'GK1セル
  
    Cells(1, 195) = "=small(gh1:gk1, 1)" ’たとえば1234の1の部分 GM1セルの部分
    Cells(1, 196) = "=small(gh1:gk1, 2)" ’たとえば1234の2の部分
    Cells(1, 197) = "=small(gh1:gk1, 3)" ’たとえば1234の3の部分
    Cells(1, 198) = "=small(gh1:gk1, 4)" ’たとえば1234の4の部分 GP1セルの部分
    
 For j = 1 To 4  '4つの数字(出目)を変数に格納する
     deme(j) = Cells(1, 194 + j)
  Next j


   For k = 1 To 3  ’ペア数字をもとに計算出力する 1つ目と2~4目
         xa = deme(1)
         ya = deme(k + 1)
    
          Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1
    Next k
   
  For l = 2 To 3 ’ペア数字をもとに計算出力する 2つ目と3~4目
       xa = deme(2)
       ya = deme(l + 1)


         Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1
   Next l
  
       xa = deme(3) ’ペア数字をもとに計算出力する 3つ目と4目
       ya = deme(4)
  
     Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1


  i = i + 1
Loop


Call saikeisanon ’再計算等を開始


Cells(3, 187) = i - 4 & " 回" ’最終当選回号を表示
Cells(1, 190).Select


End Sub




 Cells(xa + 5, 190 + ya) = Cells(xa + 5, 190 + ya) + 1の共通式をサブマクロに設定するには


変数xaと yaの設定を変えれば良いと思います。





ナンバーズ3のマクロの場合も基本的にはパターンは同じですね。






マクロでの上の計算結果が正しいかどうかを確かめるには?


(マクロの操作を手動操作でするだけですw)



次の操作を手動ですれば良いと思います。


1・当選番号を小さい順に並び替える。


2・ペア数字を全部だす。


3・ペア数字全部を検索または関数で調べる。