Excelでデータ処理をしていると、「空白セルが含まれている行をまとめて削除したい」という場面はよくあります。
手作業で1行ずつ削除するのは手間がかかりますが、VBAのSpecialCells
とEntireRow
を組み合わせれば、一瞬で効率的に処理できます。
本記事では、指定範囲内にある空白セルを含む行を一括削除する方法について、実用的なコードとともに丁寧に解説いたします。
目次
コード例:空白セルを含む行をまとめて削除
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列 |
---|---|---|
A | 1 | B |
3 | ||
X | Y | |
Z | 9 | C |
削除後:
- 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 Next → On Error GoTo 0 | 空白なしでもエラー回避 |
大量のデータを扱う表では、「空白セルを含む行を一括で処理」することで、データの整形や前処理が非常に効率化されます。
本記事の方法を活用して、不要なデータ行を一掃し、クリーンなデータセットを維持してみてください。