Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 空白セルを削除するExcelマクロ

空白セルを削除するExcelマクロ

対象:Excel2003, Excel2007, Excel2010, Excel2013

誰かから受け取ったExcelファイルを業務で使おうとしたとき、整理が必要なことはよくあります。

空白セルを削除するのは、そんな代表的な整理作業の一つです。

単純な1列のリストになっていればいいのに、データベース的な発想のない方が作ったExcelファイルだと、時々空白のセルが入っていたりします。

範囲選択しておいて並べ替えを行うことで、データの入っているセルだけを集めることもできますが、似たような作業が頻発すると、結構面倒です。

そんなときに便利なマクロをVBA(Visual Basic for Applications)で作成しましたので、ご紹介しておきます。

[スポンサードリンク]

アクティブセルから下の空白セルをすべて削除するサンプルマクロ

アクティブなセルから下にある空白セルをすべて削除して、データの入っているセルを上に詰めるマクロです。

Sub アクティブセルから下の空白セルをすべて削除する()
 Dim msg As String
 Dim col_num As Long
 Dim row_num As Long
 Dim row_end As Long
 Dim i As Long

 msg = "アクティブセルから下の空白セルをすべて削除しますか?"
 If MsgBox(msg, vbYesNo) = vbNo Then Exit Sub

 col_num = ActiveCell.Column
 row_num = ActiveCell.Row

 row_end = Cells(Rows.Count, col_num).End(xlUp).Row

 For i = row_end To row_num Step -1
  If Len(Cells(i, col_num).Value) = 0 Then
   Cells(i, col_num).Delete xlShiftUp
  End If
 Next i
End Sub

サンプルマクロの解説

まず、アクティブセルの列番号と行番号と、
 col_num = ActiveCell.Column
 row_num = ActiveCell.Row

アクティブセルのデータの入っている最終行番号を、
 row_end = Cells(Rows.Count, col_num).End(xlUp).Row

それぞれ変数に格納しています。

Cells(Rows.Count, 列番号).End(xlUp).Row
というのは、データの入っている最終行番号を取得するExcel VBAで定番の書き方です。

その、一番下のセルからアクティブなセルに向かって上方向にループ処理を開始して
 For i = row_end To row_num Step -1

もしデータが入力されていなければ、
  If Len(Cells(i, col_num).Value) = 0 Then

セルを削除して上方向に詰めています。
   Cells(i, col_num).Delete xlShiftUp

上記のマクロは、アクティブセルから下にある空白セルを削除していますが、アクティブな列の全空白セルを削除するのなら、
 For i = row_end To row_num Step -1
の部分を
 For i = row_end To 1 Step -1
とすればOKです。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 空白セルを削除するExcelマクロ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.