今回は、Excel VBAを使って空白行を削除する方法について、解説していきます。
本記事のポイントおよびキーワード
✔ 飛び飛びの空白行を削除するVBA
✔ 使用するメソッドなどは以下
・For文
・If文
・Rows.Deleteメソッド
概要
飛び飛びに空白行があるExcelファイルから、データが入っている行だけ残したい時に便利なVBAです。
具体的なExcelのイメージは↓のような感じです。所々に空白行が入ってますね。これを一気に消すことができます。
VBAコードの流れ
処理を実行するVBAコードの流れは以下です。
1.始まりの行と終わりの行を指定
2.開始行から終了行までセルをチェックする
3.セルが空白かだったら削除する
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
Dim TOP As Long
Dim BOTTOM As Long TOP = 4
BOTTOM = 20
TOPが始まりの行、BOTTOMが終わりの行です。それぞれDimで定義して、4と20を代入しました。
つまり、4行目と20行目の間で空白がないかを確認するという事になります。
なお、iは変数として定義しています。次のFor文で使用します。
空白セルをチェックする
ループの範囲が指定できたら、その範囲で空白セルをチェックします。
For i = BOTTOM To TOP Step -1
Next
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
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コードについて、解説しました。
大量の空白行があるファイルを整理するときなどに、活躍しますよ!
参考になれば幸いです。最後までお読みいただき、ありがとうございました。
コメント