セル内改行の除去

Excelの台帳が関係する自動化依頼を受けた際、最初に「表の掃除」を行うことが多い。中でも(知らないと)地味に厄介なのが、「セル内改行の除去」だ。
f:id:Infoment:20200923222337p:plain

言わずと知れた「セル内改行」は、セル編集中に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

その後、マクロなど用いずとも、検索と置換で一気に除去できることを知った。
f:id:Infoment:20200923223223p:plain

「検索する文字列」にカーソルを合わせ、Ctrlキーを押しながらJを押す。
すると、「,」のような小さな何かが入力されたことが分かる(※)。
※先程ご指摘いただいた(有難うございます)。実は、カーソルの点滅とのこと。

更に「置換後の文字列」が空欄のまま「すべて置換」ボタンを押すことで、
改行を一気に削除できる。
f:id:Infoment:20200923224229g:plain

ちなみに、マクロの記録結果を録って整理すると、こんな感じになる。

Sub Macro1()
    Cells.Replace What:=Chr(10), _
                  Replacement:="", _
                  LookAt:=xlPart, _
                  SearchOrder:=xlByRows, _
                  MatchCase:=False, _
                  SearchFormat:=False, _
                  ReplaceFormat:=False
End Sub

どちらも、たまにお世話になる。お勧めです。

参考まで。