【Excel/VBA】セル内の改行を削除する方法
みなさんこんにちは。
Excelを使用していると、セル内に改行が含まれているデータを扱うことがあるかと思います。
見た目上は問題なくても、別の処理に使用したり、CSV出力やWebスクレイピングで取得したデータを加工したりする際に、セル内の改行が邪魔になることがあります。
今回は、Excel VBAを使用してセル内の改行を削除する方法についてご紹介したいと思います。
この記事はこんな人におすすめ
この記事はこんな人におすすめです!
- VBAプログラミング:初学者~初級者
- セル内の改行を削除したい人
- 取得した文字列を1行に整形したい人
- Webスクレイピングで取得した文字列を加工したい人
- コードだけサクッと取得したい人
といったところでしょうか。
VBAの文字列操作に関する過去の記事
VBAの文字列操作については、過去の記事でもご紹介しておりますのでそちらもどうぞ。
今回やりたいこと
例えば、A1セルに以下のような文字列が入力されているとします。
東京都
新宿区
西新宿
セル内では3行に分かれていますが、今回はこちらを、
東京都新宿区西新宿
のように、改行を削除して1行の文字列にすることがゴールです。
セル内の改行を削除するコード
セル内の改行を削除する場合は、Replace関数を使用します。
Sub main()
Range("A1").Value = Replace(Range("A1").Value, vbLf, "")
End Sub
たったこれだけです。
上記のコードを実行すると、A1セル内に含まれている改行が削除され、1行の文字列になります。
コード解説
Replace(Range("A1").Value, vbLf, "")
Replace関数は、指定した文字列を別の文字列へ置き換える際に使用します。
今回の場合は、セル内の改行を表すvbLfを空文字""へ置き換えています。
つまり、改行部分を何もない状態へ置き換えることで、セル内の改行を削除しています。
改行をスペースに置き換える方法
改行を完全に削除すると、文字列同士がそのまま連結されてしまいます。
例えば、
東京都
新宿区
西新宿
を、
東京都 新宿区 西新宿
のようにしたい場合は、空文字ではなく半角スペースへ置き換えます。
Sub main()
Range("A1").Value = Replace(Range("A1").Value, vbLf, " ")
End Sub
用途に応じて、改行を削除するか、スペースへ置き換えるかを使い分けると良いかと思います。
複数セルを一括で処理する方法
複数のセルに対して一括で改行を削除したい場合は、For Eachを使用すると簡単です。
Sub main()
Dim cell As Range
For Each cell In Range("A1:A10")
cell.Value = Replace(cell.Value, vbLf, "")
Next cell
End Sub
上記ではA1セルからA10セルまで順番に処理し、それぞれのセル内に含まれている改行を削除しています。
vbLfとvbCrLfについて
VBAで改行を扱う際は、vbLfやvbCrLfといった記述を使用することがあります。
Excelのセル内改行は、通常vbLfで取得できることが多いため、今回はこちらを使用しています。
ただし、外部ファイルやWebサイトから取得した文字列などでは、vbCrLfが含まれている場合もあります。
その場合は、以下のように複数回Replaceを実行すると対応しやすいです。
Sub main()
Dim str1 As String
str1 = Range("A1").Value
str1 = Replace(str1, vbCrLf, "")
str1 = Replace(str1, vbLf, "")
str1 = Replace(str1, vbCr, "")
Range("A1").Value = str1
End Sub
取得元によって改行コードが異なる場合がありますので、Webスクレイピングなどで取得した文字列を加工する際には覚えておくと便利かと思います。
最後に
いかがでしたでしょうか。
今回は、Excel VBAを使用してセル内の改行を削除する方法についてご紹介しました。
改行を削除する処理自体は非常に簡単ですが、取得したデータを加工したり、別の処理へ受け渡したりする際には意外と使用する機会が多いかと思います。
Replace関数を使用すれば簡単に処理できますので、少しでもご参考になればと思います。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。
そんな方はいつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!Webスクレイピング以外にもWebアプリの開発サービスも出品しております。
こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、
お気軽にご相談ください。
スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?
