Vbaで空白行を削除する方法(例あり)
VBA で次のメソッドを使用して空白行を削除できます。
方法 1: 特定の範囲の空白行を削除する
Sub DeleteEmptyRowsInRange()
Sheets(" Sheet1 ").Select
Range(" A1:B10 ").Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
この特定のマクロは、 Sheet1の範囲A1:B10からすべての空白行を削除します。
方法 2: シート全体の空白行を削除する
Sub DeleteEmptyRowsInSheet()
'turn off screen updating for faster performance
Application.ScreenUpdating = False
Dim i As Long
With ActiveSheet
For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If WorksheetFunction.CountA(.Rows(i)) = 0 Then
ActiveSheet.Rows(i).Delete
End If
Next
End With
'turn screen updating back on
Application.ScreenUpdating = True
End Sub
この特定のマクロは、アクティブ シート全体からすべての空白行を削除します。
次の例は、各メソッドを実際に使用する方法を示しています。
例 1: 特定の範囲の空白行を削除する
さまざまなバスケットボール選手に関する情報を含む次のデータセットが Excel にあるとします。
次のマクロを作成して、このシートの範囲A1:B10からすべての空白行を削除できます。
Sub DeleteEmptyRowsInRange()
Sheets(" Sheet1 ").Select
Range(" A1:B10 ").Select
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
このマクロを実行すると、次の出力が表示されます。
指定した範囲からすべての空白行が削除されていることに注意してください。
例 2: シート全体の空白行を削除する
さまざまなバスケットボール選手に関する情報を含む次のデータセットが Excel にあるとします。
次のマクロを作成して、シート全体からすべての空白行を削除できます。
Sub DeleteEmptyRowsInSheet()
'turn off screen updating for faster performance
Application.ScreenUpdating = False
Dim i As Long
With ActiveSheet
For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If WorksheetFunction.CountA(.Rows(i)) = 0 Then
ActiveSheet.Rows(i).Delete
End If
Next
End With
'turn screen updating back on
Application.ScreenUpdating = True
End Sub
このマクロを実行すると、次の出力が表示されます。
シート全体からすべての空白行が削除されていることに注意してください。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: セル値に基づいて行を削除する方法
VBA: 名前に特定のテキストが含まれている場合にシートを削除する方法
VBA: ファイルを削除する方法