複数列データに展開するマクロについて
以前「複数列データに展開するマクロ」を記事にしましたが?
良く考えたら、これは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)
ユーザーフォームを使って
列数
空白列数
列巾
その他
等を指定するマクロも出来ると思います。
その場合はマクロの改良が面倒ですが?
キッチリしたマクロを作ったのがスキルアップになると思います。