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

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

マクロはアイデア?




たとえば、上の様に左側に2列に並んだ数字を交互に入れ替えて右側の様に1列にするマクロはどのようにしたら良いのだろうか?




最近考え始めたが?


なぜかと言うと集計をして、継続回数と非継続回数を1列に集計してグラフ化したら?


これだけ継続した後、つぎに継続しない状況が一目で分かると言うかパターンはどうなのか知りたいと思っているので。


単純なマクロで良いと思うが、すこしアイデアが必要な気がしている。


今後考えて見よう。



1)たとえば回号も同時に抽出して、あとから回号でソートする。


2)変数を使ってデータを保存し最後に出力する。


なかなかアイデアがまとまらない感じです。



3)左の行、右の行の順に別の行に移動させる又はコピーさせる。
この際、データを隙間なく表示させる為にカウンターを使って入力セルを指定させる。




マクロ kougox で上の様に2列を1列に並び替えてみました。


すごく簡単なマクロでも、直ぐには浮かんで来ませんでしたが良く考えれば成程レベルですね。  counter変数を使って出力先の行セル位置を計算しています。


手動でB列の先頭指定後 マクロ実行 でE列に出力させる





Sub kougox()


Dim retu, gyou, counter, t, i As Integer


      retu = ActiveCell.Column
      gyou = ActiveCell.Row
     
      t = 0:  counter = 0


    Do Until Cells(gyou + t, retu) = ""
   
       For i = 0 To 1
              Cells(counter + gyou, retu + 3) = Cells(gyou + t, retu + i)
              counter = counter + 1
        Next i
   
     t = t + 1
   
    Loop


End Sub




Sub kougodt() '変数 dt(50)を使用した場合


Dim retu, gyou, dt(50), counter, t, i, k As Integer


      retu = ActiveCell.Column
      gyou = ActiveCell.Row
     
      t = 0:  counter = 0
    Do Until Cells(gyou + t, retu) = ""
   
       For i = 0 To 1
     
          dt(counter) = Cells(gyou + t, retu + i)
              counter = counter + 1
            k = counter
     
      Next i
     
    t = t + 1
   
    Loop
   
    For counter = 0 To k
         Cells(gyou + counter, retu + 3) = dt(counter)
     Next counter


End Sub




データに空行セルが有る場合は違うマクロを考える必要があります。


実際のデータは空行が多いのでマクロの中で関数を使うなど別のアイデアが必要になるかも知れませんが? その場合は処理時間など問題があるような気がします。