インストラクターのネタ帳 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値が入ることがあるのだろうか?
- 最後の行から処理しているのは、私も同じだ。