エクセル表の空白行を一括で簡単に削除する方法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 rng As Range
    Dim cell As Range
    Dim delRange As Range

    Set rng = ActiveSheet.UsedRange

    For Each cell In rng.Columns(1).Cells
        If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then
            If delRange Is Nothing Then
                Set delRange = cell
            Else
                Set delRange = Union(delRange, cell)
            End If
        End If
    Next cell

    If Not delRange Is Nothing Then
        delRange.EntireRow.Delete
    End If
End Sub

簡単に説明

変数定義
  • rng:範囲を格納、「ActiveSheet.UsedRange」でアクティブシートの使用されている範囲全体を指定します。
  • cell:各セルを処理
  • delRange:削除対象の範囲を保持
空白行検索
  • For Each ループで、rng.Columns(1).Cells に含まれる各セル(1列目のセル)を順に処理します。
  • Application.WorksheetFunction.CountA(cell.EntireRow) は、cell の属する行全体にデータが何個あるかを数えます。CountA 関数は空でないセルの数を返し、もし全てのセルが空であれば 0 を返します。
削除対象の行の特定
  • もし行全体が空(すべてのセルが空)であれば、そのセルを delRange に追加します。
  • Union(delRange, cell) を使用して、削除する行の範囲を拡張していきます。
空白行の削除
  • もし行全体が空(すべてのセルが空)であれば、そのセルを delRange に追加します。
  • Union(delRange, cell) を使用して、削除する行の範囲を拡張していきます。

まとめ

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

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

目次