Excel VBAでは不要な行を削除したり、値が重複する行を削除したりできます。
この記事では、Excel VBA で行・列を削除する方法について
- 行・列を削除する方法
- 行・列の値をクリアする方法
といった基本的な内容から、値が重複する行を削除する方法など応用的な使い方についても解説していきます。本記事でも登場する Rangeについて詳しく知りたい方はこちらを参照してください!
行を削除する方法
Rows.Delete で行を削除する方法
Excel VBA では Rows.Deleteを使って指定した行を削除できます。
[書式]
Rows(行番号).Delete
次の例では 1 行目を削除するために Rows(1).Deleteと記述しています。
[使用例]
Sub Sample() Rows(1).Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。1 行目が正しく削除されていますね。
Range.Delete で複数の行をまとめて削除する方法
Excel VBAではRange.Deleteを使って範囲内の行をまとめて削除できます。
[書式]
Range(“開始行:終了行”).Delete
次の例では1から3行目を削除するために Range(“1:3”).Deleteと記述しています。
[使用例]
Sub Sample() Range("1:3").Delete End Sub
[実行結果]
画像では、サンプルをボタンが押されたときに実行しています。1から3行目が正しく削除されていますね。
Range.EntireRow.Delete で行を削除する方法
Excel VBAではRange.EntireRow.Deleteを使って指定した範囲を含む行を削除できます。
画像は、Excel 上で セルを選択した後 Shift + Spaceキーを押しています。Range.EntireRowは、このように指定範囲を含む行全体というイメージです。
[書式]
Range(“セル”).EntireRow.Delete
次の例では B2 セルを含む行を削除するために Range(“B2”).EntireRow.Deleteと記述しています。
[使用例]
Sub Sample() Range("B2").EntireRow.Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。B2セルを含む2行目が正しく削除されていますね。また、2つのセルで指定した範囲を含む行を削除できます。
[書式]
Range(“開始セル:終了セル”).EntireRow.Delete
次の例ではB2からC3の範囲を含む行を削除するためにRange(“B2:C3”).EntireRow.Deleteと記述しています。
[使用例]
Sub Sample() Range("B2:C3").EntireRow.Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。B2からC3の範囲を含む2から3行目が正しく削除されていますね。
列を削除する方法
Columns.Delete で列を削除する方法
Excel VBAではColumns.Deleteを使って指定した列を削除できます。
[書式]
Columns(“列”).Delete
次の例では1列目を削除するために Columns(1).Deleteと記述しています。
[使用例]
Sub Sample() Columns(1).Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。1列目が正しく削除されていますね。
Range.Delete で複数の列をまとめて削除する方法
Excel VBA ではRange.Deleteを使って範囲内の列をまとめて削除できます。
[書式]
Range(“開始列:終了列”).Delete
次の例ではAからC列を削除するためにRange(“A:C”).Deleteと記述しています。
[使用例]
Sub Sample() Range("A:C").Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。A から C 列が正しく削除されていますね。
Range.EntireColumn.Delete で列を削除する方法
Excel VBAではRange.EntireColumn.Delete<を使って指定した範囲を含む列を削除できます。
画像は、Excel 上で セルを選択した後Ctrl + Spaceキーを押しています。Range.EntireColumnは、このように指定範囲を含む列全体というイメージです。
[書式]
Range(“セル”).EntireColumn.Delete
次の例ではB2 セルを含む列を削除するためにRange(“B2”).EntireColumn.Deleteと記述しています。
[使用例]
Sub Sample() Range("B2").EntireColumn.Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。セルB2を含むB列が正しく削除されていますね。また2 つのセルで指定した範囲を含む列を削除できます。
[書式]
Range(“開始セル:終了セル”).EntireColumn.Delete
次の例ではB2 から C3 の範囲を含む列を削除するためにRange(“B2:C3”).EntireColumn.Deleteと記述しています。
[使用例]
Sub Sample() Range("B2:C3").EntireColumn.Delete End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。B2 から C3 の範囲を含む B から C 列が正しく削除されていますね。
行の値をクリアする方法
Rows.Clear で行の値をクリアする方法
Excel VBAではRows.Clearを使って指定した行の値をクリアできます。
[書式]
Rows(“列”).Clear
次の例では1行目の値をクリアするためにRows(1).Clearと記述しています。
[使用例]
Sub Sample() Rows(1).Clear End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。1行目の値が正しくクリアされていますね。
Range.Clear で複数の行の値をまとめてクリアする方法
Excel VBAではRange.Clearを使って範囲内の行の値をまとめてクリアできます。
[書式]
Range(”開始行:終了行”).Clear
次の例では1 から 3 行目の値をクリアするためにRange(“1:3”).Clearと記述しています。
[使用例]
Sub Sample() Range("1:3").Clear End Sub
[実行結果]
画像では、サンプルをボタンが押されたときに実行しています。1 から 3 行目の値が正しくクリアされていますね。
Range.EntireRow.Clear で行の値をクリアする方法
Excel VBA ではRange.EntireRow.Clearを使って指定した範囲を含む行の値をクリアできます。
[書式]
Range(”セル”).EntireRow.Clear
画像は、Excel 上で セルを選択した後Shift + Spaceキーを押しています。Range.EntireRowは、このように指定範囲を含む行全体というイメージです。
次の例ではB2 セルを含む行の値をクリアするためにRange(“B2”).EntireRow.Clearと記述しています。
[使用例]
Sub Sample() Range("B2").EntireRow.Clear End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。セルB2を含む2行目の値が正しくクリアされていますね。
また2 つのセルで指定した範囲を含む行の値をクリアできます。
[書式]
Range(”セル”).EntireRow.Clear
次の例ではB2からC3の範囲を含む行の値をクリアするためにRange(“B2:C3”).EntireRow.Clearと記述しています。
[使用例]
Sub Sample() Range("B2:C3").EntireRow.Clear End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。B2からC3の範囲を含む 2 から 3 行目の値が正しくクリアされていますね。
列の値をクリアする方法
Columns.Clear で列の値をクリアする方法
Excel VBA ではColumns.Clearを使って指定した列の値をクリアできます。
[書式]
Columns(列).Clear
次の例では1 列目の値をクリアするためにColumns(1).Clearと記述しています。
[使用例]
Sub Sample() Columns(1).Clear End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。1 列目の値が正しくクリアされていますね。
Range.Clear で複数の列の値をまとめてクリアする方法
Excel VBA ではRange.Clearを使って範囲内の列の値をまとめてクリアできます。
[書式]
Range(“開始列:終了列”).Clear
次の例ではAからC列の値をクリアするためにRange(“A:C”).Clearと記述しています。
[使用例]
Sub Sample() Range("A:C").Clear End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。AからC列の値が正しくクリアされていますね。
Range.EntireColumn.Clear で列の値をクリアする方法
Excel VBA ではRange.EntireColumn.Clearを使って指定した範囲を含む列の値をクリアできます。
画像は、Excel 上で セルを選択した後 Ctrl + Space キーを押しています。Range.EntireColumnは、このように指定範囲を含む列全体というイメージです。
[書式]
Range(“セル”).EntireColumn.Clear
次の例ではB2セルを含む列の値をクリアするためにRange(“B2”).EntireColumn.Clearと記述しています。
[使用例]
Sub Sample() Range("B2").EntireColumn.Clear End Sub
[実行結果]
画像では、サンプルをボタンが押されたときに実行しています。セルB2を含むB列の値が正しくクリアされていますね。
また 2 つのセルで指定した範囲を含む列の値をクリアできます。
[書式]
Range(“開始セル:終了セル”).EntireColumn.Clear
次の例ではB2からC3の範囲を含む列の値をクリアするためにRange(“B2:C3”).EntireColumn.Clearと記述しています。
[使用例]
Sub Sample() Range("B2:C3").EntireColumn.Clear End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。B2からC3の範囲を含む B から C 列の値が正しくクリアされていますね。
重複する行を削除する
Range.RemoveDuplicates で重複する行を削除する方法
Excel VBA ではRange.RemoveDuplicatesで重複する行を削除できます。
[書式]
Range(“開始列:終了列”).RemoveDuplicates(Array(重複列, ...))
例えば、社員の出張について名前、日付、場所をまとめた名簿があるとします。
ここでは名前・日付・場所の全てが重複する行を削除するため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
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。名前・日付・場所の全てが6行目と重複する7行目が削除できていますね。
もう一つ同じ書式を使用した別の例を用意しました。ここでは名前と場所が重複する行を削除するためRange(“A:C”).RemoveDuplicates(Array(1,3))と記述しています。
この2つの例を比較して理解を深めましょう!
[使用例]
Sub Sample() Range("A:C").RemoveDuplicates(Array(1, 3)) End Sub
[実行結果]
画像では、上の例をボタンが押されたときに実行しています。名前・場所が1行目と重複する5行目、そして6行目と重複する7行目が削除できていますね。
まとめ
いかがでしたか?
今回は Excel VBA で行・列を削除する方法について解説しました。RemoveDuplicatesを使えば、名簿などのデータから重複する行だけを削除できるので、ぜひ活用してくださいね。
もし Excel VBA で行・列を削除する方法を忘れてしまったら、この記事を思い出してください!