対象:Excel2003, Excel2007, Excel2010
スペースを改行にするために、TRIM関数やSUBSTITUTE関数などを使った数式をご紹介しました。
この数式では1つ以上のスペースが改行になりますが、実務では2つ以上の連続したスペースだけを改行にしたいという要望のほうが、よくあるかもしれません。
[スポンサードリンク]
そんなときのためのユーザー定義関数を作成してみました。
▼連続したスペースを改行にするユーザー定義関数
Function Replace_連続したスペースを改行に(文字列 As String) As String
Dim txt As String
txt = 文字列
txt = Replace(txt, " ", " ")
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\s{2,}"
Replace_連続したスペースを改行に = .Replace(txt, vbLf)
End With
End Function
Function Replace_連続したスペースを改行に(文字列 As String) As String
Dim txt As String
txt = 文字列
txt = Replace(txt, " ", " ")
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\s{2,}"
Replace_連続したスペースを改行に = .Replace(txt, vbLf)
End With
End Function
正規表現を使えば、上記のようなコードで連続したスペースを改行に置換できます。
連続する改行を2個の改行にするユーザー定義関数をご紹介していますが、それとよく似ています。
違うのはWithステートメント内の
.Pattern = "\s{2,}"
Replace_連続したスペースを改行に = .Replace(txt, vbLf)
の部分です。
Patternプロパティに「\s{2,}」2個以上のスペースを指定している部分と、ユーザー定義関数の戻り値を「.Replace(txt, vbLf)」とReplaceメソッドを使って改行1つにしているところです。
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 連続したスペースを改行に置換するユーザー定義関数