エクセルの空白行を一括で削除する簡単な方法
エクセルでデータを扱う際、空白行が混在すると分析や印刷が煩雑になることがあります。一般的なエクセル機能を使って、空白行を簡単に削除する手順を紹介します。
紙でのデータチェックをしていて、あまりにもデータ数が多かったので、システムからデータをエクスポートしました。しかし、そのデータにはデータ間に空白だらけでした。手作業で削除するのは時間の無駄なので、直ぐにできるこの方法を使いました。VBAでも可能ですが、作業状況によってはエクセルの一般機能で十分対応可能です。
作業前と作業後のデータ例
作業前のデータ例です。赤枠の空白行を削除したい。

作業後

特殊セルを選択する方法で行削除
この方法が一番シンプルです。
空白行を含む列を選択します。

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

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

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

連番振りソートで空白行の削除手順
列を挿入し、A列に連番を入力します

この例ではA列ですが、最終列のE列でも問題ありません。
D列の金額でソートします。
ソート後、空白行が下に集まるので、A列に番号が振られている空白行をすべて削除します。

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

A列が不要であれば削除します。
エクセルのソート機能を活用することで、空白行を迅速に見つけ出して削除することができます。以下は、この方法の詳細とその利点です。
関数を使う方法で行削除
この方法の方が少し手間がかかります。
=COUNTA(A2:C2)=0
この例では、絶対参照($)はなくてもOKです

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