まりふのひと

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

インストラクターのネタ帳 2013年08月18日「空白セルを削除するマクロ

 誰かから受け取ったExcelファイルを業務で使おうとしたとき、整理が必要なことはよくあります。空白セルを削除するのは、そんな代表的な整理作業の一つです。
単純な1列のリストになっていればいいのに、データベース的な発想のない方が作ったExcelファイルだと、時々空白のセルが入っていたりします。
自分も似たようなマクロを完成させたばかりなので気になってコードを見た。

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


 考察

  • これは、空白のセルを削除する。行を削除するのではないので、リスト形式の表で実行すると、データが壊れる。
  • 空白のセルの判断を Len = 0 で行っている。
    • 私は = "" で行っている。Len の方が正確なのだろうか? 早いのだろうか?
    • Excelでセルに Empty値が入ることがあるのだろうか?
  • 最後の行から処理しているのは、私も同じだ。