Excelを使っていて、
セルの中で勝手に改行されてしまって困った経験はありませんか?
特に次のような場面でよく発生します。
- CSVやテキストデータを貼り付けたとき
- アンケートや問い合わせ内容を一覧にしたとき
- 他システムから出力されたデータを加工するとき
見た目は1セルでも、
中に「改行(Alt+Enter)」が入っていると、並び替えや集計がうまくいかないことがあります。
そこで今回は、ExcelVBAでセル内の改行を一括で削除・置換するマクロをご紹介します。
この記事でできること
- セル内の改行を一括で削除
- 改行をスペースに置換
- 選択範囲だけ処理
- シート全体をまとめて処理
そもそも「セル内の改行」とは?
Excelでは、セル内で Alt + Enter を押すと、
セルの中で改行できます。

VBAでは、この改行は次の文字として扱われます。
vbLf (ラインフィード)
Chr(10)
今回のマクロでは、この Chr(10) を削除・置換します。
① 選択範囲のセル内改行を一括削除するマクロ(基本)
まずは一番安全な、選択範囲だけを対象にする方法です。
Option Explicit
' 選択範囲のセル内改行を削除する
Sub RemoveLineBreak_Selection()
Dim rng As Range
Dim cell As Range
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してから実行してください。", vbExclamation
Exit Sub
End If
Set rng = Selection
For Each cell In rng.Cells
If Not IsError(cell.Value) Then
cell.Value = Replace(cell.Value, Chr(10), "")
End If
Next cell
MsgBox "選択範囲の改行を削除しました。", vbInformation
End Sub
ポイント
Chr(10)がセル内改行Replaceで空文字に置き換えて削除- エラーセルはスキップして安全に処理
② 改行を「スペース」に置換するマクロ
改行を削除すると、文字が詰まりすぎる場合があります。
その場合は、スペースに置換するのがおすすめです。
Option Explicit
' 選択範囲のセル内改行をスペースに置換
Sub ReplaceLineBreakWithSpace()
Dim rng As Range
Dim cell As Range
If TypeName(Selection) <> "Range" Then
MsgBox "セル範囲を選択してから実行してください。", vbExclamation
Exit Sub
End If
Set rng = Selection
For Each cell In rng.Cells
If Not IsError(cell.Value) Then
cell.Value = Replace(cell.Value, Chr(10), " ")
End If
Next cell
MsgBox "改行をスペースに置換しました。", vbInformation
End Sub
③ シート全体のセル内改行を一括処理するマクロ
「このシートは全部きれいにしたい」という場合は、 UsedRange(使っている範囲)を対象にします。
Option Explicit
' アクティブシート全体のセル内改行を削除
Sub RemoveLineBreak_Sheet()
Dim ws As Worksheet
Dim cell As Range
Set ws = ActiveSheet
For Each cell In ws.UsedRange.Cells
If Not IsError(cell.Value) Then
cell.Value = Replace(cell.Value, Chr(10), "")
End If
Next cell
MsgBox "シート全体の改行を削除しました。", vbInformation
End Sub
よくある質問
Q. 複数行の改行も消えますか?
はい。
セル内に何個改行があっても、すべて置換されます。
Q. 数式が入っているセルはどうなりますか?
数式セルの場合、
結果の文字列が置換され、数式は値に変わります。
数式を残したい場合は、
処理前に対象範囲を限定してください。
Q. 手作業でやる方法はありますか?
「検索と置換」で、
検索文字に Ctrl + J を入力すると改行を指定できますが、 大量データではVBAのほうが安全・確実です。
実行手順
- Alt + F11 でVBEを開く
- 「挿入」→「標準モジュール」
- 上記マクロを貼り付け
- セル範囲を選択(またはシートを表示)
- マクロを実行
まとめ:セル内改行はVBAで一発処理
セル内の改行は、
見た目では気づきにくいですが、Excel作業のトラブル原因になりやすいポイントです。
- 並び替えがうまくいかない
- CSV出力時にレイアウトが崩れる
- 他システムに取り込めない
今回のVBAを使えば、
こうした問題をまとめて安全に解消できます。
ぜひ、日々のExcel業務に取り入れてみてください。


コメント