三日坊主ブログ

意外と続いてます。。。

Excelで並べたセルを左右対称入れ替え

世の人達が批判的になる理由はよくわかるけど、Excelで図を描くのは楽で便利だ。

 

罫線の下書きがすでに描かれた状態なので、罫線を引くのが異常に簡単。
Visioだと左で引いた線と右で引いた線とが、いつの間にかずれてイライラする。
Excelだとそんなことはない。ただ行削除、列削除するとずれちゃうことはあるけど。。。

それに計算もできるんで、数列の式さえわかればコピペですむ。
VisioでもWordでもうまくすればできそうだけど、そんなにお手軽ではない。

 

昨日仕事で巨大な図をExcelで描いた。
その図を左右反転したくなったけど、近い機能としては「行と列を入れ替える」しかなく左右反転できず。

調べてみると、欲しい機能をVBAで書いてくれている人がいた。ありがたや。

excel 左右対照入れ替え | Office系ソフトのQ&A【OKWave】

 

Sub test()
Dim i As Long
Const mirrorColumnsNo As Long = 4

ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Cut Destination:=Sheets(2).Columns(1).Resize(, mirrorColumnsNo)
For i = 1 To mirrorColumnsNo
Sheets(2).Columns(i).Cut Destination:=ActiveSheet.Columns(mirrorColumnsNo - i + 1)
Next i
ActiveSheet.Columns(1).Resize(, mirrorColumnsNo).Replace What:=ActiveSheet.Name & "!", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub

 

使い方は、

  1. 左右反転させたい領域を新しいファイルのSheet1にコピー
  2. Visual Basic Editorを起動し、ThisWorkbookにコピー(ここ間違ってそうだけど、僕はうまくいった)
  3. 最初の方のmirrorColumnsNoの数字を、左右反転させたいカラム数に合わせて書き換え(僕は418カラムを左右反転させた)
  4. Visual Basic Editorの実行ボタンをプッシュ

ががーっと処理が進む姿を見ると、がんばってるなって感じだった。
VBAでセルを編集するとUndoができないのが、玉に瑕。