趣味のエクセルマクロ&数字選択式宝くじ

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

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

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


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


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


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


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

(マクロ作成方法6を改造し入力して計算する)
Sub n4bx_pea_tyo_non_nkai() 'ボックスペア集計 (重複なし) 任意の回数での集計
Dim xa, ya, i, j, k, l, m, n, dpt1, dpt2, dpt3, dpt4, dptn, deme(4), ptn, lastkai, skai As Integer
 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