VBAで空行を削除して行を詰める

不要な空行を削除するには

テキストデータをそのままExcelシートに貼り付けて作業をすることがあります。

その場合に無駄な空行を削除したいことがあります。

正規表現が使えるテキストエディタであれば、置換前「^.*\r\n」→置換後「」のように空行を全て一括で削除することも出来ますが、Excelでは標準の機能ではそのようなものはありません。

このように空行を自動で削除するコードが以下になります。

空行削除関数(コード)

以下の関数は選択セルがある列の空行を削除します。選択セルが1列の場合に特化しています。

7行目 処理速度を上げるために画面の更新処理を止めています。
11行目 最終行の位置を取得しています。「VBAで編集セル範囲の選択と最終行と最終列の取得」で詳しく紹介しています。
15行目 処理中の選択セルが最終行の位置に達した場合はそれ以降は値がないとみなして処理を終了しています。
24行目 アクティブセルの値が空のため削除しています。
27行目 空行が削除されることにより最終行の位置も1つ上に上がります。そのための調整を行っています。
30行目 空行ではないため1つ下のセルを選択しなおしています。
35行目 処理開始時点のセル位置を再度選択しています。これがない場合、データが多い場合に最終行が選択された状態になります。
37行目 画面の更新処理の停止を解除します。



利用方法

この関数は選択している列に対して有効です。その他の列の状態は無視します。

このようにB列とC列に値が設定されている場合に、B列を選択して関数を実行すると、

このようにC列に値が入っていてもB列が空行であればその行を削除します。

削除したい列さえよければそれでよし!という関数です。

関連記事

サブコンテンツ

このページの先頭へ