EXCEL【VBAマクロ】: 空白セルのある行をまるごと削除する方法

在庫管理などで、空白セルが出た場合に、空白セルの行をまるごと削除するマクロを作成しました。
削除する行が、2-3箇所程度であれば手作業でいけますが、それ以上になると時間もかかりますし、面倒ですよね。
今回のコードでは、下の写真を例に取ると、ミカンの行を全て削除できます。

概要

実行前




実行後


まず行の最終行を取得します。
その後、最終行から2行目まで、下から順番に空白セルがあるかチェックしていき、空白セルがある場合は削除するというIf文を使用しています。

コード【VBAマクロ】

  1. Sub rows_delete()
  2.     Dim i As Integer
  3.     Dim lastrows As Integer
  4.     lastrows = Range("A" & Rows.Count).End(xlUp).Row
  5.     For i = lastrows To 2 Step -1
  6.          If ActiveSheet.Cells(i, 2) = "" Then
  7.             Application.Rows(i).Delete
  8.        end if
  9.     Next
  10. End Sub







コード【VBAマクロ】の解説

1.
適当なファイル名をつけます。
2-3.
行数と最終行を、それぞれiとlastrowsと定義しています。
4.
A列に対して、下から数えていき、最初に値が入っている行を最終行としています。
※A列に空白セルがある場合は、空白セルのない列に変更したほうが良いです。
5.
For文で最終行から2行目まで、下から1つずつ順番にループしてチェックしていきます。
※行や列を削除するコードの場合、最終行や最終列から始まりに向けてループを回していく必要があります。そうすることで、全ての行や列をチェックすることが出来ます。
6-7.
もしi行目のBセルが空白(””)だった場合、i行目を削除します。

空白セルではなく、値が0の場合に削除したい場合は、6行目の空白(””)を0に変更する必要があります。
私の用途としては、コピペした時に生じる空白行を一括で削除するために作ったマクロなので、在庫管理などにはそもそも向かないかもしれません。
コメント頂ければ、改善してみます。