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

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

LOTO6 ホットナンバー表示マクロ(案)

ロト6のホットナンバー表示マクロを作成中ですが上手く行きませんw
(ビンゴ5のホットナンバー用マクロ応用しましたが、今回は赤い線で囲った部分がおかしいところになります おかしいとこに共通的な面があるか推測しています)


ここでロト6のホットナンバーの定義は、ボーナス数字を含んで間隔が3以内で最低3回以上の出現を対象にマクロで赤色と下線表示とします。


上手く行かない原因は単純に私のマクロ作成スキル不足ですが、上の表を見ると間隔用の数字と本数字のやボーナス数字のが混在しています。
これらを踏まえてどうマクロ作成するかを考えたら良いかだと思います。


Dim y As Integer
Sub loto6_hot_no()
For x = 10 To 54  '54
y = 3
Do Until Cells(y, 2) = ""
If Cells(y, x) = "" Then
   Cells(y + 1, x).Select
 
  Else
    Cells(y, x).Select
    retu = ActiveCell.Column
     gyou = ActiveCell.Row
     gyoupoint = gyou
  
    If IsNumeric(Cells(gyou, retu).Value) = False Then
  
      For ii = 1 To 4
          Cells(gyou + ii, retu).Select
       j = ii
       If IsNumeric(Cells(gyou + j, retu).Value) = False Then Exit For
       y = y + 1
       Next ii
   
       If IsNumeric(Cells(gyou + j, retu).Value) = False And (WorksheetFunction.CountIf(Range(Cells(gyou + j, retu), Cells(gyou + j + 4, retu)), "〇") _
        + WorksheetFunction.CountIf(Range(Cells(gyou + j, retu), Cells(gyou + j + 4, retu)), "●")) >= 2 Then
       
        y = y - 2 'データ行チェックの調整
     
         Cells(gyoupoint, retu).Select
     
         入力赤丸
    
        End If
    End If
   
  End If
   
   y = y + 1


  Loop
 Next x


End Sub
 
 Sub 入力赤丸()
Dim maruiti As Object


    retu = ActiveCell.Column
    gyou = ActiveCell.Row
   
 Set maruiti = Application.Cells(gyou, retu)


         jj = 1
   If IsNumeric(Cells(gyou + jj, retu).Value) = True Then


     Do Until IsNumeric(Cells(gyou + jj, retu).Value) = False
    
      If jj > 3 Then Exit Do
     jj = jj + 1
    
    Loop
 
  End If
 
      Cells(gyou + jj, retu).Select
    maruiti.Font.Underline = xlUnderlineStyleSingle
    maruiti.Font.Color = -16776961
   
   y = y + jj 'データ行チェックの調整
   
  If IsNumeric(Cells(gyou + jj, retu).Value) = True Then Exit Sub
入力赤丸


End Sub


以上のマクロでは問題があります。
難しいマクロに挑戦してスキルを上げたいです。毎日考えて行きたいですね!


マクロ学習法とは 14(自動記録?)

自動記録でマクロを学習するのは良くないと言うサイトを読みました。


まあ、すべて自動記録でマクロは作れないと思いますし、限界はあります。


私は良く自動記録でマクロを作りますが?手動でマクロを作れないわけではないです。


自動記録で作った方が楽なものは自動記録にしています。


記述の複雑なマクロはほぼ自動記録ですね。




上の様に昇順ソートを自動記録マクロで作りました。
かなり複雑ですね!私には手動では作る気にはなりません。


もしソートをする範囲がデータ記入により増えて行く場合は、自動記録で作った部分を
手動で修正して行きます。


だからマクロを学習するには、自動記録と手動記録の両方が必要な気がします。


自動記録マクロを作り、どういう構成になっているか観察することによりマクロの学習になりますね。勿論理解出来ればの話ですが、なんとなく分かるのも大事な気がします。





マクロ学習法とは 13(プログラミング)

エクセルマクロを学習するのはプログラミングの基礎を知らないといけないとか書いてあるサイトを見ました。(プログラムをつくることをプログラミングと言います)


プログラミングの基礎を知っていた方がマクロは理解しやすいのは間違いないですね。



プログラムとは単純に考えると処理の順序を書いたものだと思いますが?


       処理1


       処理2


       処理3


       処理?


のように処理1を終わらないと処理2に進めない。


処理1を終わらせるには色んな変数等が必要かも知れません。



 
ATMで銀行カードでお金を引き出すには 


カードを入れる 暗証番号入力  引き出し額入力 等


手順が有りますが、裏で複雑なプログラムが動いているんでしょうね。


プログラムでは、カードを入れなくては暗証番号は受け付けませんw




プログラムの考え方の概要は難しいものでは無いと思います。


プログラミングはプログラムを作ることですから、エクセルマクロを作るのも


プログラミングですね。出来たマクロはプログラムになります。



私はマクロで 処理データを取得し、計算して、結果を出力する の様に考えてます。


それぞれでアイデアを考えてマクロの部分を書いてマクロを完成させて行く作業ですね。