エクセルを使っていると、
「特定の位置に行や列を追加したい」「不要な行・列を削除したい」
と思うことがよくあります。
手作業でもできますが、VBAを使えば大量のデータでも一瞬で処理できます!
本記事では、VBAで行や列を挿入・削除する方法をVBAマクロ歴3年の私が、基礎から応用まで分かりやすく解説 します。
VBAのマクロで行や列を挿入・削除する方法

元データ(上図)を用意しました。
これから行や列を挿入・削除する方法を紹介していきます。
- 行:Rows
- 列:Columns
- 挿入:Insert
- 削除:Delete
以上を組み合わせることで行や列を挿入・削除できます。
1つ1つ解説いたします。
マクロの基礎や始め方は下記記事をご参考ください。
行を挿入
Sub 行を挿入()
Rows(2).Insert
End Sub
上記コードにて、行を挿入することができます。
今回は2行目に行を挿入しています。

3行目に挿入したい場合は、(2)を(3)に変更してください。
列を挿入
Sub 列を挿入()
Columns(2).Insert
End Sub
上記コードにて、列を挿入することができます。
今回は2列目(B列)に行を挿入しています。

3列目に挿入したい場合は、行の時と同様に(2)を(3)に変更してください。
行を削除
Sub 行を削除()
Rows(2).Delete
End Sub
上記コードにて、行を削除することができます。
今回は2行目を削除しています。

3行目を削除したい場合は、(2)を(3)に変更してください。
列を削除
Sub 列を削除()
Columns(2).Delete
End Sub
上記コードにて、列を削除することができます。
今回は2列目(B列)を削除しています。

3列目を削除したい場合は、(2)を(3)に変更してください。
基礎はここまでです。
ここからは実践で使える応用編です。
いろいろな挿入・削除
今回紹介するのは以下の2つです。
- 複数の行・列を挿入・削除
- 条件付きで行・列を挿入・削除
複数の行・列を挿入・削除
下記のように記述することで、2行や3列など「複数の行・列を挿入」することができます。
Sub 複数の行を挿入()
Rows("2:4").Insert
End Sub
Sub 複数の列を挿入()
Columns("B:D").Insert
End Sub
複数の行・列を削除したい場合は、「Insert」を「Delete」に変更してください。
条件付きで行・列を挿入・削除
特定の条件を満たす場合のみ、行や列を挿入・削除することもできます。
指定した値がある行を削除
Sub 基準値の行に挿入()
Dim c As Range
Set c = Columns(1).Find("基準値")
If Not c Is Nothing Then Rows(c.Row).Delete
End Sub
上記コードを実行することで、特定の列(今回は1列目であるA列)に基準値がある場合、その行を削除できます。

「Delete」を「Insert」に変更することで、A列に基準値がある場合に行を挿入することもできます。
データのある行の間に空白行を自動挿入
Sub 空白行の挿入()
Dim i As Integer
Dim lastRow As Integer
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = lastRow To 2 Step -1
Rows(i).Insert
Next i
End Sub
上記コードを実行することで、1行ごとに空白行を挿入することができます。

挿入・追加する際の注意点
行や列を挿入・削除することによって、セルの参照がズレたり、エラーが発生する場合があります。
わかりやすい例を挙げてみましょう。

上図は現在、「A2セル」に「B2セル」を参照する数式が入っています。
では、B列を削除してみましょう。

エラーになりました。
参照先のB列が無くなったためです。
vlookup関数などが使われている場合は、意図しないセルが参照される場合もありますので注意が必要です。
最後に
マクロで行や列を挿入・削除する方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!