【Excel VBA】列を削除する基本コードとやさしい解説

VBA & Excel
スポンサーリンク
スポンサーリンク

はじめに

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
decopon

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

moco
moco

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

コメント

タイトルとURLをコピーしました