対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016
横方向に並んだデータを縦方向に並べる処理(行列の入れ替え)を、何回か繰り返さなければならない場面に出くわしました。
ルールが明確にあって、割ときれいなデータだったならば、バッチ処理するExcelマクロを作ったのですが、そうではなかったため、手作業でデータを選択しておいて縦方向に並べる処理を、繰り返すことにしました。
選択された横方向のデータを縦方向に並べる処理だけをマクロにしました。
[スポンサードリンク]
横方向のデータを縦方向に並べるサンプルマクロ
大量データをバッチ処理するのではなく、このようなちょっとした手作業を便利にするExcelマクロも、ヒトが手作業で作ったきれいではないシートを扱わざるを得ない実務現場では必要になります。
Sub 横方向のデータを縦に並べる()
Dim itm As Range
Dim n As Long For Each itm In Selection
itm.Cut Destination:=ActiveCell.Offset(n, 0)
n = n + 1
Next itm
End Sub
Dim itm As Range
Dim n As Long For Each itm In Selection
itm.Cut Destination:=ActiveCell.Offset(n, 0)
n = n + 1
Next itm
End Sub
上図のようなデータを選択しておいてから、上記のマクロを実行すると下図のような状態になります。
サンプルマクロについて
RangeオブジェクトのPasteSpecialメソッドの引数・Transposeを指定する方法も考えられますが、
For Each~Nextループの中で、RangeオブジェクトのCutメソッドの引数・Destinationを指定して、
データごとに切り取り&貼り付けを行うマクロにしてみました。
ショートカットキー[F8]でステップ実行すると、
データの、切り取り&貼り付けが繰り返される様子を確認できます。
[スポンサードリンク]
Home » Excel VBA Rangeオブジェクト » Offsetプロパティ » 横方向のデータを縦方向に並べるExcelマクロ