【VBA】列を削除|サンプルコード多数

Excel VBAを使って列を削除する方法は多くありますが、その全てを網羅的に理解することで、作業の効率が格段に上がります。この記事では、基本的な列の削除から応用的なテクニックまで、一つ一つ丁寧に解説します。また、各項目には実用的なサンプルコードも添えています。

目次

列を削除する基本的な方法

単一列の削除

Excel VBAで最も基本的な列の削除方法は、Columns.DeleteまたはRange.EntireColumn.Deleteメソッドを使用することです。

サンプルコード1:列番号を指定して削除

Sub DeleteColumnByNumber()
    ' 3番目の列を削除
    Columns(3).Delete
End Sub

このコードでは、Columns(3).Deleteという記述で3番目の列を削除しています。

サンプルコード2:列名を指定して削除

Sub DeleteColumnByName()
    ' "C"列を削除
    Columns("C").Delete
End Sub

このコードでは、Columns("C").Deleteという記述で”C”列を削除しています。

サンプルコード3:特定のセルから列を指定して削除

Sub DeleteColumnByCell()
    ' "C1"セルが属する列を削除
    Range("C1").EntireColumn.Delete
End Sub

このコードでは、Range("C1").EntireColumn.Deleteという記述で”C1″セルが属する列を削除しています。

複数列を削除する方法

複数列の一括削除

複数の列を一度に削除する場合もあります。その場合、以下のようにコードを記述します。

サンプルコード4:連続する複数列を削除

Sub DeleteConsecutiveColumns()
    ' C列からD列までを削除
    Range("C:D").Delete
End Sub

このコードでは、Range("C:D").Deleteという記述でC列からD列までを一括で削除しています。

サンプルコード5:非連続な複数列を削除

Sub DeleteNonConsecutiveColumns()
    ' B列とD列を削除
    Columns("B").Delete
    Columns("D").Delete
End Sub

このコードでは、Columns("B").DeleteColumns("D").Deleteという記述でB列とD列を個別に削除しています。そのため、B列を消したあとは元々E列だった列がD列になっているので、B列とE列が消去されます。

DeleteとClearの違い

DeleteとClearの動作の違い

DeleteClearは似ているが、動作が異なります。

  • Delete:列そのものを削除し、左に移動する。
  • Clear:列は残して、すべての値や書式をクリアする。

サンプルコード6:列を削除(Delete)

Sub UseDeleteMethod()
    ' B列を削除
    Columns("B").Delete
End Sub

このコードでは、Columns("B").Deleteという記述でB列を削除しています。この操作により、C列以降が左に移動します。

サンプルコード7:列をクリア(Clear)

Sub UseClearMethod()
    ' B列の内容をクリア
    Columns("B").Clear
End Sub

このコードでは、Columns("B").Clearという記述でB列の内容だけをクリアしています。列自体は削除されずに残ります。

別シートの列を削除する方法

シートを指定して列を削除

特定のシートで列を削除する場合、Worksheetsオブジェクトを使用します。

サンプルコード8:特定のシートで列を削除

Sub DeleteColumnInSpecificSheet()
    ' Sheet1の1列目を削除
    Worksheets("Sheet1").Columns(1).Delete
End Sub

このコードでは、Worksheets("Sheet1").Columns(1).Deleteという記述でSheet1の1列目を削除しています。

高度なサンプルコード集

サンプルコード9:条件に合う列を削除する

Sub DeleteColumnsBasedOnCondition()
    Dim i As Integer
    ' 最後の列から1列目までループ
    For i = ThisWorkbook.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
        ' 1行目の値が"削除"の場合、その列を削除
        If ThisWorkbook.Sheets("Sheet1").Cells(1, i).Value = "削除" Then
            ThisWorkbook.Sheets("Sheet1").Columns(i).Delete
        End If
    Next i
End Sub

このコードでは、Sheet1の1行目に”削除”と書かれている列を削除します。最後の列から1列目に向かってループを回しています。

サンプルコード10:特定の列以外を削除する

Sub DeleteColumnsExceptSpecificOnes()
    Dim i As Integer
    Dim targetColumns As Variant
    targetColumns = Array("A", "C", "E") ' 保持したい列
    
    ' 最後の列から1列目までループ
    For i = ThisWorkbook.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
        ' 列名がtargetColumnsに含まれていない場合、その列を削除
        If IsEmpty(Application.Match(ThisWorkbook.Sheets("Sheet1").Cells(1, i).Address(False, False, xlA1), targetColumns, 0)) Then
            ThisWorkbook.Sheets("Sheet1").Columns(i).Delete
        End If
    Next i
End Sub

このコードでは、Sheet1の特定の列(この場合はA、C、E列)以外をすべて削除します。

サンプルコード11:連続する複数列を一括削除(動的に列範囲を指定)

Sub DeleteConsecutiveColumnsDynamically()
    Dim startCol As Integer
    Dim endCol As Integer
    
    startCol = 2 ' 開始列(B列)
    endCol = 4   ' 終了列(D列)
    
    ' B列からD列までを削除
    ThisWorkbook.Sheets("Sheet1").Range(ThisWorkbook.Sheets("Sheet1").Cells(1, startCol), ThisWorkbook.Sheets("Sheet1").Cells(1, endCol)).EntireColumn.Delete
End Sub

このコードでは、Sheet1のB列からD列までを一括で削除します。startColendColで開始列と終了列を動的に指定しています。

サンプルコード12:特定のシートの全列を削除

Sub DeleteAllColumnsInSpecificSheet()
    ' Sheet2の全列を削除
    ThisWorkbook.Sheets("Sheet2").Cells.Clear
End Sub

このコードでは、Sheet2の全ての列を削除します。Cells.Clearメソッドで全セルをクリアしています。

サンプルコード13:特定の文字列が含まれる列を削除

Sub DeleteColumnsContainingString()
    Dim i As Integer
    Dim targetString As String
    targetString = "削除" ' 削除対象の文字列
    
    ' 最後の列から1列目までループ
    For i = ThisWorkbook.Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
        ' 列内にtargetStringが含まれている場合、その列を削除
        If Not IsError(Application.Match(targetString, ThisWorkbook.Sheets("Sheet1").Range(ThisWorkbook.Sheets("Sheet1").Cells(1, i), ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, i).End(xlUp)), 0)) Then
            ThisWorkbook.Sheets("Sheet1").Columns(i).Delete
        End If
    Next i
End Sub

このコードでは、Sheet1の各列を調べ、特定の文字列(この場合は”削除”)が含まれている列を削除します。

関連動画

まとめ

この記事では、Excel VBAで列を削除する多様な方法とその違い、そしてそれぞれの方法での具体的なサンプルコードを提供しました。これで、列の削除がより効率的に、そして正確に行えるようになったはずです。何か疑問点や不明点があれば、ぜひコメントでお知らせください。

Excelのショートカットキーの練習

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストをリセット
現在の除外状況のURL取得
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次