Excelマクロで空白セルのある行を削除するシンプルなコード
こんにちは! Excel講師の榊裕次郎です。
東京・大手町にある某ホテルの宿泊システムの調整を行いました。その中で、どうしてもワークシート操作においてマクロ処理が必要となり、こちらのマクロが大活躍したのでブログに過去ログとして残しておきます。
サンプルファイルをご覧ください。
空白セルを含むセルの行を全部削除するときのマクロです。
【VBAコード】
① Sub Sample()
② Range(“A1:A100”).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
③ End Sub
【日本語訳】
① Sampleマクロです。
② セルA1~A100まで空白セルがあったら、その行を削除します。
③ おしまい
ただ、もしA1~A100まで空白セルがない場合は、エラーを返してしまいます。空白セルが存在しないのですから、処理ができないよーという嘆きのエラーですね。
① Sub Sample()
② On Error Resume Next
③ Range(“A1:A100”).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
④ End Sub
そのときは、②を加えて、エラーが起きたら次の行に進む、というコードを1行入れておくと安心です。マクロを実行すると、無事に空白セルのある行を削除することができました。
注意点として、対象となるワークシートでIFERROR関数を使っているワークシートも多いのでご紹介しておくと……。
=IFERROR(数式,””)
注目すべきところは、第2引数の「””」で空白を出力している場合です。
数式そのものが入っていれば、空白セルではないので気づきそうなものですが、そのセルを[値として貼り付け]をして数式を消したとしても、セルの中身はスペースのない空白ではありますが、ゴミのようなものが残ります。
そのため、[検索と選択]より[条件を選択してジャンプ]→空白セルを指定しても、そのセルは空白とはみなされず、この操作は無視されてしまうのです。
マクロが動かない! とドツボにハマるところなのかなと思い、こちらも記載しておきました。
Excelマクロは勉強すれば誰でも書けるようになりますが、現場のワークシートは何の操作をしているかわかりません。細かいところまで確認してから作成する、というのが大事ですね。