シート上で列を入替える方法
列は「移動」する方法と「挿入」する方法があります。両者の違いは「挿入」の場合、他の列が移動する事になります。「移動」では、他の列の位置は変わらないため既に値がある列を指定すると元の値は上書きされます。操作の違いは Shiftキー を押しながら行うか否かです。
列の移動
シート上で手動で列を入替えるには、列の上部をクリックして列全体を選択します。
その後、マウスカーソルを境界線付近に移動させます。

すると、カーソルが十字に変わります。

この状態でドラッグして好きな位置まで移動させます。

もし、既に値がある列を選択した場合は、確認のメッセージが出ます。

このとき「OK」を選択すると、元のデータは書き変えられてしまうので注意してください。
列を挿入
既にある列を別の場所に挿入するには、上記の方法を Shiftキー を押しながら行います。

この時、周辺の列は元の位置から変化します。

”名前”の列は、B列からA列に変わりました。
プログラムで列を入替える方法
プログラムで列を入替える時も「移動」と「挿入」の2種類に分かれます。
それぞれの方法を見ていきます。
列を移動するプログラム
列を移動させるプログラムは以下の通りです。
Columnsで列番号を指定し、Cutメソッドを使います。引数の Destination には行先を指定します。手動操作と異なり、移動先の列に値があっても確認のメッセージは出ず上書きされますので注意してください。
Sub Macro1()
Columns(1).Cut Destination:=Columns(3)
End Sub

列を挿入するプログラム
例えば、1列目を2列目と3列目の間に挿入するには、以下のように書きます。
Sub Macro2()
Columns(1).Cut
Columns(3).Insert
End Sub
Columns(3).Insert が、いかにも不可解な感じがしますが、
移動するコマンドは、コピー、ペースト、削除という段階を踏んで行われることを念頭に置けば理解しやすくなります。
もし、上記のプログラムで、Columns(2).Insert としてしまうと以下のような動作となり、結果的には前と同じ状態になってしまいます。

これを踏まえると、1列目を2列目に挿入したい場合は、Columns(2+1).Insert としなければいけません。
以下が動作の様子です。

上記のようなルールがわかれば、3列目を1列目に挿入したい場合の動作の仕方も見えてくるでしょう。

まとめ
列の挿入に関して少々わかりずらい点がありましたが、
移動コマンドは、コピー、ペースト、削除という段階を踏んで行われることを念頭に置けば理解しやすなるでしょう。
わからなくなったら「マクロの記録」でどのようなプログラムが出力されるかを確認するのも良いでしょう。
ちなみに Columns(1) は Columns(”A:A”) と書く事もできますので覚えておきましょう。
コメント