セル内改行の除去
Excelの台帳が関係する自動化依頼を受けた際、最初に「表の掃除」を行うことが多い。中でも(知らないと)地味に厄介なのが、「セル内改行の除去」だ。
言わずと知れた「セル内改行」は、セル編集中にAltキーを押しながらEnterキーを押すことで実現可能だ。列幅を抑えるなどの目的から、私の知る限り様々な場面で多用されている。
しかしこのセル内改行、Excelの自動化で邪魔になる場合は、前もって「掃除」が必要だ。かつては、こんなコードを用いてチマチマと掃除していた。
Sub お掃除() Dim r As Range Dim arr As Variant On Error Resume Next For Each r In ActiveSheet.UsedRange arr = Split(r, Chr(10)) r = Join(arr, vbNullString) Next End Sub
その後、マクロなど用いずとも、検索と置換で一気に除去できることを知った。
「検索する文字列」にカーソルを合わせ、Ctrlキーを押しながらJを押す。
すると、「,」のような小さな何かが入力されたことが分かる(※)。
※先程ご指摘いただいた(有難うございます)。実は、カーソルの点滅とのこと。
更に「置換後の文字列」が空欄のまま「すべて置換」ボタンを押すことで、
改行を一気に削除できる。
ちなみに、マクロの記録結果を録って整理すると、こんな感じになる。
Sub Macro1() Cells.Replace What:=Chr(10), _ Replacement:="", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False End Sub
どちらも、たまにお世話になる。お勧めです。
参考まで。