【VBA入門】行・列の削除とクリアをする方法

Excel VBAでは不要な行を削除したり、値が重複する行を削除したりできます。

この記事では、Excel VBA で行・列を削除する方法について

  • 行・列を削除する方法
  • 行・列の値をクリアする方法

といった基本的な内容から、値が重複する行を削除する方法など応用的な使い方についても解説していきます。本記事でも登場する Rangeについて詳しく知りたい方はこちらを参照してください!

目次

行を削除する方法

Rows.Delete で行を削除する方法

Excel VBA では Rows.Deleteを使って指定した行を削除できます。

[書式]

Rows(行番号).Delete

次の例では 1 行目を削除するために Rows(1).Deleteと記述しています。

[使用例]

Sub Sample()
    Rows(1).Delete
End Sub

[実行結果]
image11

画像では、上の例をボタンが押されたときに実行しています。1 行目が正しく削除されていますね。

Range.Delete で複数の行をまとめて削除する方法

Excel VBAではRange.Deleteを使って範囲内の行をまとめて削除できます。

[書式]

Range(“開始行:終了行”).Delete

次の例では1から3行目を削除するために Range(“1:3”).Deleteと記述しています。

[使用例]

Sub Sample()
    Range("1:3").Delete
End Sub

[実行結果]
image12

画像では、サンプルをボタンが押されたときに実行しています。1から3行目が正しく削除されていますね。

Range.EntireRow.Delete で行を削除する方法

Excel VBAではRange.EntireRow.Deleteを使って指定した範囲を含む行を削除できます。

image00er

画像は、Excel 上で セルを選択した後 Shift + Spaceキーを押しています。Range.EntireRowは、このように指定範囲を含む行全体というイメージです。

[書式]

Range(“セル”).EntireRow.Delete

次の例では B2 セルを含む行を削除するために Range(“B2”).EntireRow.Deleteと記述しています。

[使用例]

Sub Sample()
    Range("B2").EntireRow.Delete
End Sub

[実行結果]
image13

画像では、上の例をボタンが押されたときに実行しています。B2セルを含む2行目が正しく削除されていますね。また、2つのセルで指定した範囲を含む行を削除できます。

[書式]

Range(“開始セル:終了セル”).EntireRow.Delete

次の例ではB2からC3の範囲を含む行を削除するためにRange(“B2:C3”).EntireRow.Deleteと記述しています。

[使用例]

Sub Sample()
    Range("B2:C3").EntireRow.Delete
End Sub

[実行結果]
image14

画像では、上の例をボタンが押されたときに実行しています。B2からC3の範囲を含む2から3行目が正しく削除されていますね。

列を削除する方法

Columns.Delete で列を削除する方法

Excel VBAではColumns.Deleteを使って指定した列を削除できます。

[書式]

Columns(“列”).Delete

次の例では1列目を削除するために Columns(1).Deleteと記述しています。

[使用例]

Sub Sample()
    Columns(1).Delete
End Sub

[実行結果]
image21

画像では、上の例をボタンが押されたときに実行しています。1列目が正しく削除されていますね。

Range.Delete で複数の列をまとめて削除する方法

Excel VBA ではRange.Deleteを使って範囲内の列をまとめて削除できます。

[書式]

Range(“開始列:終了列”).Delete

次の例ではAからC列を削除するためにRange(“A:C”).Deleteと記述しています。

[使用例]

Sub Sample()
    Range("A:C").Delete
End Sub

[実行結果]
image22

画像では、上の例をボタンが押されたときに実行しています。A から C 列が正しく削除されていますね。

Range.EntireColumn.Delete で列を削除する方法

Excel VBAではRange.EntireColumn.Delete<を使って指定した範囲を含む列を削除できます。

image00ec

画像は、Excel 上で セルを選択した後Ctrl + Spaceキーを押しています。Range.EntireColumnは、このように指定範囲を含む列全体というイメージです。

[書式]

Range(“セル”).EntireColumn.Delete

次の例ではB2 セルを含む列を削除するためにRange(“B2”).EntireColumn.Deleteと記述しています。

[使用例]

Sub Sample()
    Range("B2").EntireColumn.Delete
End Sub

[実行結果]
image23

画像では、上の例をボタンが押されたときに実行しています。セルB2を含むB列が正しく削除されていますね。また2 つのセルで指定した範囲を含む列を削除できます。

[書式]

Range(“開始セル:終了セル”).EntireColumn.Delete

次の例ではB2 から C3 の範囲を含む列を削除するためにRange(“B2:C3”).EntireColumn.Deleteと記述しています。

[使用例]

Sub Sample()
    Range("B2:C3").EntireColumn.Delete
End Sub

[実行結果]
image24

画像では、上の例をボタンが押されたときに実行しています。B2 から C3 の範囲を含む B から C 列が正しく削除されていますね。

行の値をクリアする方法

Rows.Clear で行の値をクリアする方法

Excel VBAではRows.Clearを使って指定した行の値をクリアできます。

[書式]

Rows(“列”).Clear

次の例では1行目の値をクリアするためにRows(1).Clearと記述しています。

[使用例]

Sub Sample()
    Rows(1).Clear
End Sub

[実行結果]
image31

画像では、上の例をボタンが押されたときに実行しています。1行目の値が正しくクリアされていますね。

Range.Clear で複数の行の値をまとめてクリアする方法

Excel VBAではRange.Clearを使って範囲内の行の値をまとめてクリアできます。

[書式]

Range(”開始行:終了行”).Clear

次の例では1 から 3 行目の値をクリアするためにRange(“1:3”).Clearと記述しています。

[使用例]

Sub Sample()
    Range("1:3").Clear
End Sub

[実行結果]
image32

画像では、サンプルをボタンが押されたときに実行しています。1 から 3 行目の値が正しくクリアされていますね。

Range.EntireRow.Clear で行の値をクリアする方法

Excel VBA ではRange.EntireRow.Clearを使って指定した範囲を含む行の値をクリアできます。

[書式]

Range(”セル”).EntireRow.Clear

image00er

画像は、Excel 上で セルを選択した後Shift + Spaceキーを押しています。Range.EntireRowは、このように指定範囲を含む行全体というイメージです。

次の例ではB2 セルを含む行の値をクリアするためにRange(“B2”).EntireRow.Clearと記述しています。

[使用例]

Sub Sample()
    Range("B2").EntireRow.Clear
End Sub

[実行結果]
image33

画像では、上の例をボタンが押されたときに実行しています。セルB2を含む2行目の値が正しくクリアされていますね。

また2 つのセルで指定した範囲を含む行の値をクリアできます。

[書式]

Range(”セル”).EntireRow.Clear

次の例ではB2からC3の範囲を含む行の値をクリアするためにRange(“B2:C3”).EntireRow.Clearと記述しています。

[使用例]

Sub Sample()
    Range("B2:C3").EntireRow.Clear
End Sub

[実行結果]
image34

画像では、上の例をボタンが押されたときに実行しています。B2からC3の範囲を含む 2 から 3 行目の値が正しくクリアされていますね。

列の値をクリアする方法

Columns.Clear で列の値をクリアする方法

Excel VBA ではColumns.Clearを使って指定した列の値をクリアできます。

[書式]

Columns(列).Clear

次の例では1 列目の値をクリアするためにColumns(1).Clearと記述しています。

[使用例]

Sub Sample()
    Columns(1).Clear
End Sub

[実行結果]
image41

画像では、上の例をボタンが押されたときに実行しています。1 列目の値が正しくクリアされていますね。

Range.Clear で複数の列の値をまとめてクリアする方法

Excel VBA ではRange.Clearを使って範囲内の列の値をまとめてクリアできます。

[書式]

Range(“開始列:終了列”).Clear

次の例ではAからC列の値をクリアするためにRange(“A:C”).Clearと記述しています。

[使用例]

Sub Sample()
    Range("A:C").Clear
End Sub

[実行結果]
image42

画像では、上の例をボタンが押されたときに実行しています。AからC列の値が正しくクリアされていますね。

Range.EntireColumn.Clear で列の値をクリアする方法

Excel VBA ではRange.EntireColumn.Clearを使って指定した範囲を含む列の値をクリアできます。

image00ec

画像は、Excel 上で セルを選択した後 Ctrl + Space キーを押しています。Range.EntireColumnは、このように指定範囲を含む列全体というイメージです。

[書式]

Range(“セル”).EntireColumn.Clear

次の例ではB2セルを含む列の値をクリアするためにRange(“B2”).EntireColumn.Clearと記述しています。

[使用例]

Sub Sample()
    Range("B2").EntireColumn.Clear
End Sub

[実行結果]
image43

画像では、サンプルをボタンが押されたときに実行しています。セルB2を含むB列の値が正しくクリアされていますね。

また 2 つのセルで指定した範囲を含む列の値をクリアできます。

[書式]

Range(“開始セル:終了セル”).EntireColumn.Clear

次の例ではB2からC3の範囲を含む列の値をクリアするためにRange(“B2:C3”).EntireColumn.Clearと記述しています。

[使用例]

Sub Sample()
    Range("B2:C3").EntireColumn.Clear
End Sub

[実行結果]
image44

画像では、上の例をボタンが押されたときに実行しています。B2からC3の範囲を含む B から C 列の値が正しくクリアされていますね。

重複する行を削除する

Range.RemoveDuplicates で重複する行を削除する方法

Excel VBA ではRange.RemoveDuplicatesで重複する行を削除できます。

[書式]

Range(“開始列:終了列”).RemoveDuplicates(Array(重複列, ...))

例えば、社員の出張について名前、日付、場所をまとめた名簿があるとします。

image00tbl

ここでは名前・日付・場所の全てが重複する行を削除するためRange(“A:C”).RemoveDuplicates(Array(1, 2, 3))と記述しています。Range(“A:C”)の部分は削除する範囲を表し、Array(1, 2, 3)の部分は重複を調べる列を表しています。

[使用例]

Sub Sample()
    Range("A:C").RemoveDuplicates(Array(1, 2, 3))
End Sub

[実行結果]
image51

画像では、上の例をボタンが押されたときに実行しています。名前・日付・場所の全てが6行目と重複する7行目が削除できていますね。

もう一つ同じ書式を使用した別の例を用意しました。ここでは名前と場所が重複する行を削除するためRange(“A:C”).RemoveDuplicates(Array(1,3))と記述しています。

この2つの例を比較して理解を深めましょう!

[使用例]

Sub Sample()
    Range("A:C").RemoveDuplicates(Array(1, 3))
End Sub

[実行結果]
image52

画像では、上の例をボタンが押されたときに実行しています。名前・場所が1行目と重複する5行目、そして6行目と重複する7行目が削除できていますね。

まとめ

いかがでしたか?

今回は Excel VBA で行・列を削除する方法について解説しました。RemoveDuplicatesを使えば、名簿などのデータから重複する行だけを削除できるので、ぜひ活用してくださいね。

もし Excel VBA で行・列を削除する方法を忘れてしまったら、この記事を思い出してください!

この記事を書いた人

フリーランスのエンジニアです。
最近では、プログラミング関連の記事を作成するライターとしても活動しています。

趣味と業務の両方でプログラミング言語をいくつも学んできたので
その経験を活かして分かりやすい記事を作成できればと考えています。

目次