【Excel VBA】空白行を削除する

Excel

今回は、Excel VBAを使って空白行を削除する方法について、解説していきます。

本記事のポイントおよびキーワード

✔ 飛び飛びの空白行を削除するVBA
✔ 使用するメソッドなどは以下
・For文
・If文
・Rows.Deleteメソッド

本記事は、基本的な構文の詳しい説明は省略しています

概要

飛び飛びに空白行があるExcelファイルから、データが入っている行だけ残したい時に便利なVBAです。

具体的なExcelのイメージは↓のような感じです。所々に空白行が入ってますね。これを一気に消すことができます。

画像13

VBAコードの流れ

処理を実行するVBAコードの流れは以下です。

1.始まりの行と終わりの行を指定
2.開始行から終了行までセルをチェックする
3.セルが空白かだったら削除する

全体のコード

実際の全体コードはこちらです。

Sub 空白行を削除()
 Dim i As Long
 Dim TOP As Long
 Dim BOTTOM As Long

 TOP = 4
 BOTTOM = 20

 For i = BOTTOM To TOP Step -1
   If Cells(i, 1).Value = "" Then
    Cells(i, 1).EntireRow.Delete
   End If
 Next
End Sub

コードの解説

では、コード内容を説明します。

始まりと終わりの行を取得

最初に、空白行を確認して削除する範囲(ループ)を決めるするために、始まりと終わりの行番号を指定をします。

 Dim i As Long
 Dim TOP As Long
 Dim BOTTOM As Long TOP = 4
 BOTTOM = 20

TOPが始まりの行、BOTTOMが終わりの行です。それぞれDimで定義して、420を代入しました。

つまり、4行目と20行目の間で空白がないかを確認するという事になります。

なお、iは変数として定義しています。次のFor文で使用します。

空白セルをチェックする

ループの範囲が指定できたら、その範囲で空白セルをチェックします。

For i = BOTTOM To TOP Step -1

Next

For文で始めの行と終わりの行の間をループしています。後ろにあるStepで何行おきにループするかを指定できますが、ここでは-1としています。これにより、下から1行ずつチェックするようにしています。

次に、For文の中にあるIf文で空白セルをチェックしています。

For i = BOTTOM To TOP Step -1
If Cells(i, 1).Value = “” Then
Cells(i, 1).EntireRow.Delete
End If
Next
その行の1列目が空白だったら行全体を削除するという意味になります。

解説は以上です。最後にもう一度全体コードを示します。

Sub 空白行を削除()
 Dim i As Long
 Dim TOP As Long
 Dim BOTTOM As Long

 TOP = 4
 BOTTOM = 20

 For i = BOTTOM To TOP Step -1
   If Cells(i, 1).Value = "" Then
    Cells(i, 1).EntireRow.Delete
   End If
 Next
End Sub

まとめ

今回は、「空白行を削除する」VBAコードについて、解説しました。

大量の空白行があるファイルを整理するときなどに、活躍しますよ!

参考になれば幸いです。最後までお読みいただき、ありがとうございました。

コメント

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