【VBA】空白セルを含む行を一括で削除する方法|SpecialCellsとEntireRowの組み合わせ

Excelでデータ処理をしていると、「空白セルが含まれている行をまとめて削除したい」という場面はよくあります。
手作業で1行ずつ削除するのは手間がかかりますが、VBAのSpecialCellsEntireRowを組み合わせれば、一瞬で効率的に処理できます。

本記事では、指定範囲内にある空白セルを含む行を一括削除する方法について、実用的なコードとともに丁寧に解説いたします。


目次

コード例:空白セルを含む行をまとめて削除

Dim targetRange As Range

Set targetRange = Range("D2:F15")
On Error Resume Next
targetRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0

コードの解説

1. Range("D2:F15") の指定

  • 削除対象とする範囲を明示的に指定します。
  • この範囲内にある空白セルが1つでも含まれている行が削除対象になります。

2. SpecialCells(xlCellTypeBlanks)

  • 空白セルのみを抽出します。
  • 該当セルが存在しないとエラーになるため、On Error Resume Next で一時的に無視します。

3. .EntireRow.Delete

  • 空白セルを含む行全体を削除します。
  • 行全体が対象なので、他の列にまたがっていても問題ありません。

使用前後のイメージ

削除前の表(D2:F15):

D列E列F列
A1B
3
XY
Z9C

削除後:

  • 2行目と3行目(空白セルを含む)が削除され、空白のない行だけが残ります

注意点と補足

  • SpecialCells(xlCellTypeBlanks) は、範囲内に空白セルが1つもないとエラーになります。そのため、On Error Resume Next の使用が必須です。
  • 行の削除は元に戻せないため、事前にバックアップを取ることをおすすめします。

応用例:削除ではなく非表示にする場合

空白セルを含む行を削除ではなく非表示にしたい場合は、以下のように .Delete.Hidden = True に置き換えるだけです。

targetRange.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

まとめ

処理内容コード例説明
空白セルを含む行を削除.SpecialCells(xlCellTypeBlanks).EntireRow.Delete一括で削除可能
空白セルを含む行を非表示.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True非破壊で隠せる
エラー回避On Error Resume NextOn Error GoTo 0空白なしでもエラー回避

大量のデータを扱う表では、「空白セルを含む行を一括で処理」することで、データの整形や前処理が非常に効率化されます。
本記事の方法を活用して、不要なデータ行を一掃し、クリーンなデータセットを維持してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次