VBAでセル内の改行コードや特殊文字を削除する方法【vbLfとChrW対応】

目次

概要

Excelでは、セル内に改行(Alt + Enter)や特殊文字が含まれていると、見た目や処理に支障が出る場合があります。手作業での削除は手間がかかりますが、VBAを使えば一括で削除することが可能です。

本記事では、VBAを使ってセル内の改行コード(vbLf)や特殊な空白文字(ChrW(160) など)を削除する方法をご紹介いたします。さらに、改行が含まれているかどうかを検出する方法も併せて解説いたします。

サンプルコード

Sub CleanCellLineBreaks()

    ' 改行コード(vbLf)を削除
    Range("D3").Value = Replace(Range("D3").Value, vbLf, "")

    ' 特殊な空白文字(ChrW(160))を削除
    Range("D4").Value = Replace(Range("D4").Value, ChrW(160), "")

    ' アクティブセルに改行が含まれているかチェック
    If InStr(ActiveCell.Value, vbLf) > 0 Then
        MsgBox "このセルには改行が含まれています。"
    End If

End Sub

コード解説

Replace(..., vbLf, "")

  • vbLf は「Line Feed」の略で、セル内の改行コードに該当します。
  • この処理により、セル内改行(Alt + Enter で入力された改行)を空文字で置き換えて削除します。

Replace(..., ChrW(160), "")

  • ChrW(160) は、**見えない特殊な空白文字(ノーブレークスペース)**です。
  • Webから貼り付けたデータや他アプリケーションからのコピーに含まれることがあります。

InStr(..., vbLf)

  • InStr 関数は、文字列内に特定の文字(ここでは改行)が含まれているかどうかを確認します。
  • 含まれていれば MsgBox で通知します。

応用例

  • データをCSVに変換する前に整形したい場合
  • 改行や特殊文字があると動作しないVLOOKUPやMATCH関数の補正処理
  • Webから取り込んだデータのクリーニング処理

注意点

  • vbLf はセル内改行(Alt + Enter)には有効ですが、場合によっては vbCrLf(キャリッジリターン+ラインフィード)が使われていることもあるため、必要に応じて置換対象を追加してください。
  • ChrW(160) のような非表示文字は、目視では気づきにくいため、トリム関数では除去できないことがあります。

まとめ

本記事では、VBAを使ってセル内の改行や特殊空白文字を削除する方法をご紹介いたしました。

  • vbLf を使えば、改行コードの除去が可能
  • ChrW(160) を使えば、不可視な空白文字の除去も対応可能
  • InStr を使えば、検出と通知もできる

Excelのデータ整形や下処理を行う際に、ぜひ本手法をご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次