Excelでデータ整理をしていると、次のような悩みはありませんか?
- 空白行が多くて見づらい
- 1行ずつ削除するのが面倒
- 大量データの整理に時間がかかる
このような場合は、VBAで空白行を一括削除するのが最も効率的です。
この記事では、初心者でもすぐ使えるコピペOKのマクロと、実務で使える応用方法まで解説します。
この記事でできること
- 空白行を一括で削除できる
- 大量データでも高速処理できる
- 特定列だけを基準に削除できる
- エラーを防ぐ書き方が分かる
空白行削除マクロ(コピペOK)
まずは基本コードです。
Option Explicit
Sub DeleteBlankRows()
Dim lastRow As Long
Dim i As Long
' 最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 下から上に向かって削除
For i = lastRow To 1 Step -1
If WorksheetFunction.CountA(Rows(i)) = 0 Then
Rows(i).Delete
End If
Next i
MsgBox "空白行を削除しました。", vbInformation
End Sub
なぜ「下から削除」するのか?
このコードの重要ポイントはここです。
For i = lastRow To 1 Step -1
上から削除すると、行がズレて正しく処理できません。
そのため、下から削除するのが鉄則です。
コードの意味を解説
① 最終行の取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
データの最終行を自動取得しています。
② 空白判定
WorksheetFunction.CountA(Rows(i)) = 0
行にデータが1つもなければ空白と判定します。
応用①:特定の列だけ空白なら削除
例えば「A列が空白なら削除」したい場合はこちらです。
If Cells(i, 1).Value = "" Then
Rows(i).Delete
End If
この方法は実務でよく使われます。
応用②:高速化バージョン(大量データ向け)
数万行以上ある場合は、画面更新を止めると高速になります。
Application.ScreenUpdating = False
' 処理
Application.ScreenUpdating = True
実務での活用例
- CSVデータの整形
- システム出力データの整理
- 空白行を削除して集計しやすくする
データ処理の前にこのマクロを入れるだけで、作業効率が大きく改善します。
よくあるエラーと対処法
① 最終行が正しく取得できない
列を変更すると解決する場合があります。
Cells(Rows.Count, 2)
② 空白なのに削除されない
スペースが入っている可能性があります。
If Trim(Cells(i, 1).Value) = "" Then
コピペでエラーになる場合の対処法
コードが正しいのにエラーになる場合、次の原因が考えられます。
- 全角文字が混ざっている
- 見えない特殊文字がある
- 記号(= や “”)が壊れている
この場合は、
- 該当行を削除
- 手入力し直す
だけで解決することがよくあります。
まとめ
- 空白行はVBAで一括削除できる
- 下から削除するのが重要
- CountAで空白判定
- 実務では特定列判定が便利
空白行削除は非常に頻繁に使う処理です。
このマクロを覚えておくだけで、データ整理の効率が大幅に向上します。

コメント