Excel ワークシートから空の行を削除する

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

Excelのワークシートで不要になった空の行を一括で削除したい場合、VBA(マクロ)を使うと効率的です。

前提条件と注意点

  • 実行前に必ずワークシートのバックアップ(保存)を行ってください。
  • 行を削除する際は、誤ったデータの削除を防ぐため、事前に削除対象の範囲を確認してください。

空行を削除するVBAマクロ(完全版)

上から順に行を削除すると、行番号が繰り上がって判定が正しく行われなくなるため、このマクロでは下から上に向かって行を走査して削除します。

Sub DeleteEmptyRows()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lastRow As Long
    Dim i As Long
    Dim isEmptyRow As Boolean
    Dim col As Long
    Dim lastCol As Long

    ' アクティブなワークシートを対象とする
    Set ws = ActiveSheet
    
    ' データの入っている最終行と最終列を取得
    On Error Resume Next
    lastRow = ws.Cells.Find(What:="*", _
                            After:=ws.Cells(1, 1), _
                            LookAt:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious).Row
                            
    lastCol = ws.Cells.Find(What:="*", _
                            After:=ws.Cells(1, 1), _
                            LookAt:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious).Column
    On Error GoTo 0

    ' シートが完全に空の場合の処理
    If lastRow = 0 Or lastCol = 0 Then
        MsgBox "処理対象のデータが見つかりません。", vbExclamation
        Exit Sub
    End If

    ' 画面描画を停止して処理を高速化
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    ' 下から上に向かって行をチェックし、完全な空行を削除する
    For i = lastRow To 1 Step -1
        isEmptyRow = True
        For col = 1 To lastCol
            If Trim(ws.Cells(i, col).Value) <> "" Then
                isEmptyRow = False
                Exit For
            End If
        Next col
        
        If isEmptyRow Then
            ws.Rows(i).Delete
        End If
    Next i

    ' 設定を復元
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

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

使い方と実行手順

1. Excelを開き、Alt + F11 キーを押してVBE(Visual Basic Editor)画面を開きます。
2. メニューの「挿入」から「標準モジュール」を選択します。
3. 開いたモジュールウィンドウに上記のコードを貼り付けます。
4. F5 キーを押すか、マクロの実行から DeleteEmptyRows を選んで実行します。

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 変更上から順に走査すると行削除時にインデックスがずれて判定漏れを起こすVBAコードの不具合を、下から上へ走査する方式へ修正しました。
  • 追加マクロの実行手順、前提条件、および注意点に関する説明を追加しました。

文書情報

記事タイトル
Excel ワークシートから空の行を削除する
作成日
更新日
Source URL
https://papanda925.com/?p=1015

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

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