エクセル表の空白行を一括で簡単に削除する方法3選+マクロ(VBA)

エクセルの空白行を一括で削除する簡単な方法

エクセルでデータを扱う際、空白行が混在すると分析や印刷が煩雑になることがあります。一般的なエクセル機能を使って、空白行を簡単に削除する手順を紹介します。

紙でのデータチェックをしていて、あまりにもデータ数が多かったので、システムからデータをエクスポートしました。しかし、そのデータにはデータ間に空白だらけでした。手作業で削除するのは時間の無駄なので、直ぐにできるこの方法を使いました。VBAでも可能ですが、作業状況によってはエクセルの一般機能で十分対応可能です。

目次

作業前と作業後のデータ例

作業前のデータ例です。赤枠の空白行を削除したい。

作業後

特殊セルを選択する方法で行削除

この方法が一番シンプルです。

STEP
データ範囲を選択する

空白行を含む列を選択します。

STEP
「特殊セル」ダイアログを開く

「Ctrl+G」キーを押し、「ジャンプ」ダイアログを開きます。次に、「セルの選択」をクリックし、「空白セル」を選択、「OK」をクリックします。

STEP
空白行を削除する

空白行を選択されている状態で右クリックより、「削除」を選択します。

[ 行全体 ]をクリックし,ます。

連番振りソートで空白行の削除手順

STEP
連番を振る

列を挿入し、A列に連番を入力します

この例ではA列ですが、最終列のE列でも問題ありません。

STEP
金額の高い順にソート

D列の金額でソートします。

ソート後、空白行が下に集まるので、A列に番号が振られている空白行をすべて削除します。

STEP
A列で昇順にソート

最後に、A列でデータを昇順にソートし直します。

A列が不要であれば削除します。

エクセルのソート機能を活用することで、空白行を迅速に見つけ出して削除することができます。以下は、この方法の詳細とその利点です。

関数を使う方法で行削除

この方法の方が少し手間がかかります。

STEP
D列に関数入力

=COUNTA(A2:C2)=0

この例では、絶対参照($)はなくてもOKです

STEP
空白行を削除する

TRUEで抽出し、行を削除します。

→ 結果

D列は削除します。

参考・マクロ(VBA)

このマクロを実行すると、アクティブシートで1列目に空白の行がある場合、それらの行が削除されます。

Sub DeleteBlankRows()
    Dim ws As Worksheet
    Dim rng As Range
    Dim delRange As Range
    Dim i As Long

    ' 現在のシートを取得
    Set ws = ActiveSheet

    ' UsedRangeの取得(範囲を限定)
    Set rng = ws.UsedRange

    ' 最終行から逆順にループして空白行を削除
    For i = rng.Rows.Count To 1 Step -1
        If Application.WorksheetFunction.CountA(rng.Rows(i)) = 0 Then
            If delRange Is Nothing Then
                Set delRange = rng.Rows(i)
            Else
                Set delRange = Union(delRange, rng.Rows(i))
            End If
        End If
    Next i

    ' 空白行を一括削除
    If Not delRange Is Nothing Then
        delRange.Delete
    End If
End Sub

簡単に説明

  • 逆順ループで空白行を判定
    使用範囲内の各行を最後の行から順にチェック。行内に空白セルしかない場合、削除対象としてdelRangeに追加。
  • 空白行を一括削除
    delRangeが設定されていれば、まとめて削除
変数定義
  • rng:シート内の操作範囲を指定するための変数。ここでは、ActiveSheet.UsedRangeを格納し、データが含まれる範囲を効率的に操作します。
  • rng:シート内の操作範囲を指定するための変数。ここでは、ActiveSheet.UsedRangeを格納し、データが含まれる範囲を効率的に操作します。
  • delRange:削除対象の行を格納するための変数。複数の行を一括で削除するために使用されます。Unionメソッドで削除対象の行を追加していきます。
  • i:逆順ループで使用されるカウンター変数。UsedRangeの行数から1行ずつ減少させながらループを実行し、空白行を判定します。

まとめ

エクセルの基本機能を活用して、空白行を簡単に削除することができます。

VBAの知識がなくても、エクセルの一般機能を使えば十分に対応可能です。エクセルの操作に慣れていない方でも、簡単に実践できるこの方法をぜひ試してみてください。

目次