はじめに
Excelで作業をしていると、
「不要な列を削除して表を整理したい」
「条件に合う列だけを自動で削除したい」
そんな場面がよくあります。
VBAでは、列を削除する方法がいくつかあり、
目的に合わせて使い分けることで、コードがより安全で扱いやすくなります。
ここでは、列を削除する基本のコードと、そのしくみを解説します。
まずはコードを確認
Columns(3).Delete
もっともシンプルな書き方です。
3列目(C列)を削除します。
コードのしくみを解説
Columns(列番号).Delete で列を削除する
Columns(3).Delete は、C列を丸ごと削除します。
Columns("C:E").Delete 'C〜E列を削除
複数列をまとめて削除することもできます。
Range を使って列を削除する
Range("C1").EntireColumn.Delete
- セルを基準に列全体を削除したいときに便利
- EntireColumn は「そのセルが属する列」を指します
シートを指定して削除する
Worksheets("データ").Columns(3).Delete
複数シートを扱う場合は、シート名を明示すると安全です。
あわせて知っておきたいポイント
条件に合う列だけ削除する例
If Cells(1, 3).Value = "" Then
Columns(3).Delete
End If
1行目の見出しが空白なら削除する、など実務でよく使うパターンです。
ループで複数列を削除する場合の注意
列を左から順に削除すると、列番号がずれて意図しない列が削除されることがあります。
安全な書き方はこちら。
Dim i As Long
For i = 10 To 1 Step -1
If Cells(1, i).Value = "" Then
Columns(i).Delete
End If
Next i
右から左へ 処理するのがポイント
列全体ではなく、セルの内容だけ消したい場合
Columns(3).ClearContents
削除ではなく「中身だけ消す」処理です。
使うときに気をつけたいこと
- 削除した列は元に戻せません
→ バックアップを取っておくと安心です。
- 結合セルがあると削除範囲が広がることがあります
→ 必要に応じて結合を解除してから削除します。
- 大量の列を削除すると処理が重くなることがあります
→ まとめて削除するか、ScreenUpdating を使うと改善します
まとめ
- Columns(番号).Delete で列を削除できる
- EntireColumn を使うとセル基準で列全体を削除できる
- 条件付き削除や複数列削除など、実務で便利な書き方も多い
- 右から左へ削除することで、列ずれのトラブルを防げる
列の削除を自動化できると、データ整理がぐっとスムーズになります。

decopon
列の削除はシンプルですが、実務では意外と使う場面が多い機能です。
安全に扱えるように、基本の書き方を押さえておくと安心です。

moco
いらなくなった列は、VBAにそっと片づけてもらおう。
人は、必要な作業に集中できるね。

コメント