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

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

複数列データに展開するマクロについて

以前「複数列データに展開するマクロ」を記事にしましたが?
良く考えたら、これは1列のデータを横に展開するマクロでした。



実際は複数列のデータを横に展開することがあるので1列だけのマクロでは
あまり使えないような気がします。


マクロを作る時は応用出来るように作ったのが良いのですが?
取りあえず目の前にあることを優先してしまうので、後から苦労してます。


まあ、それでも何とか出来れば良いのですがw




複数列データの左端をマウスでセル指定後、下記マクロを実行します。


変数 知らなかった本当の使い方 - 趣味のエクセルで当てようロト・ナンバーズ
Sub 列へ展開3() 


Dim yiti As long, retu As long, gyou As long, Lastgyou As long, x As long, prspan As long
    
      retu = ActiveCell.Column
      gyou = ActiveCell.Row
     
                If Cells(gyou, retu) = "" Then End
               
        Range(Cells(gyou, retu + 10), Cells(gyou + 100, retu + 300)) = ""
               
        prspan = InputBox("行単位は何行にしますか?")
     
                 Lastgyou = Cells(Rows.Count, retu).End(xlUp).Row
      
                 Lastretu = Int((Lastgyou + 1 - gyou) / prspan + 2)
    
      yiti = 0
   
   For x = 2 To Lastretu
  
   Range(Cells(yiti + gyou, retu), Cells(yiti + gyou + prspan - 1, retu + 10)).Copy Cells(gyou, retu + 10 * x)
  
   yiti = yiti + prspan


   Next x
 
End Sub



   Range(Cells(yiti + gyou, retu), Cells(yiti + gyou + prspan - 1, retu + 10)).Copy Cells(gyou, retu + 10 * x)


 上の式の10のところで10列分指定している。
変数で10の部分を対応出来る様にしたのが応用が効きます。


たとえば 変数を retusuuとした場合


    retusuu= InputBox("列数は何列にしますか?") で下の式にします。


   Range(Cells(yiti + gyou, retu), Cells(yiti + gyou + prspan - 1, retu +
retusuu
)).Copy Cells(gyou, retu +
retusuu
* x)





ユーザーフォームを使って


列数


空白列数


列巾


その他


等を指定するマクロも出来ると思います。


その場合はマクロの改良が面倒ですが?


キッチリしたマクロを作ったのがスキルアップになると思います。