VBAのReplace関数でセル内の改行を削除
セル内の改行を削除する Excel2013 マクロ講座 70回
セル内の改行を全部削除するマクロ
セル内の改行を削除したい時には、VBAではReplace関数を使って改行コードと""(無)を置換することができます。
Clean関数でも同様の操作ができます。
(サンプルファイルは、こちらから マクロ70回サンプルデータ)
Replace関数を使って改行削除
Replace関数は、引数findで指定された文字列を、引数replaceで指定された回数分で置換します。
図のようにアクティブセルにある改行コードを削除したいときは、
Replace関数の構文に当てはめると、
変数に使う文字列をmyStrという名前で宣言すると、コードは、次のようになります。
Sub セルの改行削除() Dim myStr As String myStr = Replace(ActiveCell, vbLf, "") ActiveCell.Value = myStr End Subコードを実行すると改行が削除されます。
Clean関数を使う場合のコードでは次のようになります。Clean関数の引数は対象文字列だけです。
Sub セルの改行をCleand削除() Dim myStr As String myStr = ActiveCell.Value ActiveCell.Value = WorksheetFunction.Clean(myStr) End Sub
選択範囲のセルにある改行を削除するマクロ
どちらもアクティブセルに対して実行するためのコードです。
これを任意の選択範囲に対して改行を削除できるようにするには、 おなじみのFor Each~Nextステートメントで、ひとつずつセルを処理します。個々のセルはRange型の変数としてセルという名前で宣言しています。
これを任意の選択範囲に対して改行を削除できるようにするには、 おなじみのFor Each~Nextステートメントで、ひとつずつセルを処理します。個々のセルはRange型の変数としてセルという名前で宣言しています。
Sub セル内の改行を削除する() Dim セル As Range Dim myStr As String For Each セル In Selection myStr = セル.Value セル.Value = Replace(myStr, vbLf, "") Next セル End SubClean関数を使って、任意の選択範囲に対して改行を削除できるようにするコードは、同様にFor Each~Nextステートメントで、ひとつずつセルを処理します。
Sub セル内の改行をClean削除する() Dim セル As Range Dim myStr As String For Each セル In Selection myStr = セル.Value セル.Value = WorksheetFunction.Clean(myStr) Next セル End Sub
結果は、どちらを使っても選択範囲の改行を削除することができます。
セル内改行を削除した文字列を隣の列に表示
セル内改行のある文字列は、それはそのままにしておいて、隣の列に改行を削除した文字列を抽出したい場合もあるかと思います。
そのような時は、Offset プロパティを使ってアクティブセルの隣の列を操作するようにします。
Sub セル内改行を削除した文字列を隣に表示() Dim セル As Range Dim myStr As String For Each セル In Selection myStr = セル.Value セル.Offset(0, 1).Value = WorksheetFunction.Clean(myStr) Next セル End Sub
マクロを実行すると、選択したA列の範囲にある文字列から改行コードを削除した文字列が隣のB列に表示されます。