〖ExcelVBA〗空白行を一括で削除するマクロ|途中に空白があっても削除する

ExcelVBA

Excelでデータを扱っていると、
途中に空白行が混ざっていて処理しづらいことはありませんか?

手作業で削除するのは時間がかかりますし、 行を詰めるたびにズレるのもストレスですよね。

そこで今回は、ExcelVBAで空白行をまとめて削除するマクロをご紹介します。

  • 途中に空白があってもOK
  • データのある行は削除しない
  • 初心者でもそのまま使える

スポンサーリンク
スポンサーリンク

完成イメージ


空白行を一括で削除するマクロ(コピペOK)

以下のコードを標準モジュールに貼り付けてください。

Option Explicit

Sub DeleteBlankRows()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim r As Long

    Set ws = ActiveSheet

    ' A列を基準に最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 下から上に向かってチェック
    For r = lastRow To 1 Step -1

        ' 行全体が空白なら削除
        If Application.WorksheetFunction.CountA(ws.Rows(r)) = 0 Then
            ws.Rows(r).Delete
        End If

    Next r

    MsgBox "空白行の削除が完了しました。", vbInformation

End Sub

コード解説(初心者向け)

① 下から上にループする理由

For r = lastRow To 1 Step -1

行を削除すると、下の行が繰り上がります。 上から処理すると行番号がズレてしまうため、
必ず「下から上」に処理します。

② 行が完全に空白かどうかを判定

CountA(ws.Rows(r)) = 0

CountA は、 「その行に入力されているセルの数」を返します。

0 の場合は、完全に空白の行という意味になります。

③ A列基準で最終行を取得

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

A列に必ずデータが入っている前提で、 処理範囲を自動的に決めています。


よくある応用パターン

① 特定の列が空白の行だけ削除したい

例えば「A列が空白なら削除」したい場合:

If ws.Cells(r, "A").Value = "" Then
    ws.Rows(r).Delete
End If

② 見た目は空白だけど数式が入っている行を削除しない

CountA は数式もカウントします。 数式行を残したい場合は、この判定が安全です。

③ 見た目が空白(””)の行も削除したい場合

次のようにすると、より厳密に判定できます。

If Application.WorksheetFunction.CountA(ws.Rows(r)) = 0 Then
    ws.Rows(r).Delete
End If

実行手順

  1. 削除したいデータがあるシートを開く
  2. Alt + F11 でVBEを起動
  3. 「挿入」→「標準モジュール」
  4. 今回のコードを貼り付け
  5. Excelに戻り、マクロを実行

これだけで、空白行が一括で削除されます。


まとめ:空白行削除はVBAで一瞬

今回紹介したマクロを使えば、

  • 途中に空白があっても安全
  • 手作業で削除する必要なし
  • 大量データでも一瞬で処理

名簿整理、CSVデータの前処理、 集計前の下準備など、幅広く使えるマクロです。

ぜひ、あなたのExcel作業に取り入れてみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました