目次
概要
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のデータ整形や下処理を行う際に、ぜひ本手法をご活用ください。