趣味のエクセルで当てよう!ロト・ナンバーズ

当選狙いで、ナンバーズ4をメインにロト、ビンゴ5などの各種データリストや、それらの分析用エクセルVBAなどについて書いてます。

マクロ作成方法10(詳細集計)

各集計をもっと細かく集計したい時があります。
その時は、間隔を指定するとかが必要になりますね。


間隔を指定する対話型マクロが必要になりますが?その際は最後の行が分かる様に計算式を使って行きます。(下の様にしてますがこの式では5000行迄対応してます。)


集計方法としては次の様なことが考えられます。
(1)一定の間隔毎
(2)直近の任意の間隔(最後のデータから遡って)
(3)最初と最後を任意に指定


 (2)直近の任意の間隔(最後のデータから遡って)の場合はちょっと面倒な気が
 します。別のマクロ作成が必要かも知れないですね。 


直近の回数を入力してペア数字集計するマクロ(最終回からさかのぼって直近50回


変数 知らなかった本当の使い方 
(マクロ作成方法6を改造し入力して計算する)
Sub n4bx_pea_tyo_non_nkai() 'ボックスペア集計 (重複なし) 任意の回数での集計
Dim xa As long, ya As long, i As long, j As long, k As long, l As long, m As long, n As long 
Dim dpt1 As long, dpt2 As long, dpt3 As long, dpt4 As long
Dim  dptn As long, deme(4) As long, ptn As long, lastkai As long, skai As long
 Sheets("出現数").Select
  Range("HB5:HK14").Select
    Selection.ClearContents


lastkai = Sheets("ストレートパターン").Cells(2, 15) + 3 ’データの集計最終行
skai = InputBox("直近何回分") - 1 '質問で任意の集計回数を入れる(ここで50)


If skai = 0 Or skai > lastkai Then End ’入力制限
i = lastkai - skai
'i = 4
Call saikeisanoff


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)"
   
    Cells(1, 205) = "=countif(hg1:hj1, hg1)" '出目の数を計算
    Cells(1, 206) = "=countif(hg1:hj1, hh1)" '出目の数を計算
    Cells(1, 207) = "=countif(hg1:hj1, hi1)"
    Cells(1, 208) = "=countif(hg1:hj1, hj1)"
  
    dptn = Cells(1, 205) & Cells(1, 206) & Cells(1, 207) & Cells(1, 208)
     Cells(1, 221) = dptn
    
 For j = 1 To 4
     deme(j) = Cells(1, 214 + j)
  Next j
        '全パターンの関係式
            xa = deme(1)
            ya = deme(2)
           Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
 
    Select Case dptn  '各パターンからの計算
  
    Case 1111  'シングル1234  1111
   
      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 2211    'ダブル1123  2211
      
         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 1221 'ダブル1223  1221
   
       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 1122  'ダブル1233   1122
     
        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 2222 'ダブルダブル1122  2222
    
         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 1333  'トリプル1 1112 3331
          xa = deme(3)
          ya = deme(4)
     
          Cells(xa + 5, 210 + ya) = Cells(xa + 5, 210 + ya) + 1
        
    Case 3331 'トリプル2 1222 1333
   
          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) = " 直近" & skai + 1 & "回分"
Cells(1, 210).Select


End Sub