マクロ作成方法 5(N4ペア条件(重複無)を考える)
ナンバーズ4の重複無ペア集計の場合 条件を分析することにより上の(表1)から(表2)の出目関係が分かりました。この条件をもとにマクロを作れば良いと思います。
(表2)では千百桁の似た条件で並びかえています。
このように、データ条件の分析して整理出来ればマクロは作れます。
マクロ学習法とは 7 (条件分析)
シングル(ボックス昇順並び替え後)の場合は1<2<3<4の条件になります。
1<2<3<4 は 1<>2<>3<>4でも良いと思います。
(<>は等しくないと言うことです)
全部のパターンでの共通部分は出目(1)と出目(2)からの計算とします。
それ以外は出目(1)から出目(4)の出目関係から条件式を作成します。
出目の位置を間違えると正しい計算は出来ないです。
( 例 1123の23部は出目3 deme(3)と出目4 deme(4)です )
下のマクロで1回から4864回の累計計算から上の様な結果を得ました。
もっと簡単にマクロは出来そうですが?
その場合は違うアイデアを考える必要がありますね。
Sub n4bx_pea_tyono() 'ボックスペア集計 (重複なし)
Dim xa As long, ya As long, i As long, j As long, k As long, l As long
Dim m As long, n As long, deme(4) As long, ptn As long
Sheets("出現数").Select
Range("HB5:HK14").Select
Selection.ClearContents
i = 4
Call saikeisanoff ’再計算等をしない マクロ作成方法 1 と同様
Do Until Sheets("ストレートパターン").Cells(i, 3) = ""
Cells(1, 210) = Val(Left(Sheets("ストレートパターン").Cells(i, 3), 1))
Cells(1, 211) = Val(Mid(Sheets("ストレートパターン").Cells(i, 3), 2, 1))
Cells(1, 212) = Val(Mid(Sheets("ストレートパターン").Cells(i, 3), 3, 1))
Cells(1, 213) = Val(Right(Sheets("ストレートパターン").Cells(i, 3), 1))
Cells(1, 215) = "=small(hb1:he1, 1)"
Cells(1, 216) = "=small(hb1:he1, 2)"
Cells(1, 217) = "=small(hb1:he1, 3)"
Cells(1, 218) = "=small(hb1:he1, 4)"
For j = 1 To 4
deme(j) = Cells(1, 214 + j) ’出目1~4を変数に格納
Next j
'全パターンの関係式
xa = deme(1)
ya = deme(2)
’deme(1)とdeme(2)で全パターン共通の計算を先にする
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
If deme(1) <> deme(2) Then '各パターンの関係式
If deme(2) <> deme(3) And deme(3) <> deme(4) Then
ptn = 10 'シングルの時
ElseIf deme(2) <> deme(3) And deme(3) = deme(4) Then
ptn = 23 'ダブル1233の時
ElseIf deme(2) = deme(3) And deme(3) <> deme(4) Then
ptn = 22 'ダブル1223の時
ElseIf deme(2) = deme(3) And deme(3) = deme(4) Then
ptn = 31 'トリプル 1222
End If
ElseIf deme(1) = deme(2) Then '各パターンの関係式
If deme(2) = deme(3) And deme(3) = deme(4) Then
ptn = 0 'フォース 1111
ElseIf deme(2) = deme(3) And deme(3) <> deme(4) Then
ptn = 31 'トリプル 1112
ElseIf deme(2) <> deme(3) And deme(3) <> deme(4) Then
ptn = 21 ' ダブル1123
ElseIf deme(2) <> deme(3) And deme(3) = deme(4) Then
ptn = 24 ' ダブルダブル 12,22
End If
End If
Select Case ptn '各当選番号パターンからの計算
Case 10 'シングル1234の時
For k = 1 To 2 '出目13,14
xa = deme(1)
ya = deme(k + 2)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Next k
For l = 2 To 3 '出目23,24
xa = deme(2)
ya = deme(l + 1)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Next l
xa = deme(3) '出目34
ya = deme(4)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Case 21 'ダブル1123の時
For k = 3 To 4 '出目13,14
xa = deme(1)
ya = deme(k)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Next k
xa = deme(3) '出目23
ya = deme(4)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Case 22 'ダブル1223の時
xa = deme(1)
ya = deme(4)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
For k = 3 To 4 '出目23,24
xa = deme(2)
ya = deme(k)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Next k
Case 23 'ダブル1233の時
xa = deme(1)
ya = deme(3)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
For l = 1 To 2 '出目23,34
xa = deme(l + 1)
ya = deme(l + 2)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Next l
Case 24 'ダブルダブル1122の時
For k = 1 To 2 '出目23 34
xa = deme(k + 1)
ya = deme(k + 2)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
Next k
Case 31 'トリプル1およびトリプル2の時
xa = deme(3)
ya = deme(4)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
End Select
i = i + 1
Loop
Call saikeisanon
Cells(3, 210) = i - 4 & " 回"
Cells(1, 210).Select
End Sub
---------------------------------------------------------------------------
xa = deme(3)
ya = deme(4)
Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
上の式 xa ya を下の様に直接式にしても良いと思います。
Cells( deme(3) + 5, 210 + deme(4)) = Cells( deme(3) + 5, 210 + deme(4)) + 1
集計は全当選番号なので、あまり差が無くて参考にはならない気がします。
直近の100回分とかで集計したら何かが見える様な感じもします。
その場合は開始位置のマクロを修正して行けば良いですね。