« Break a character string in a cell | トップページ | Break a character string in a cell with a comma »

2018年6月 9日 (土)

セル内の文字列をコンマで改行する

1つ前の記事「Excel VBAでセル内での改行」では
5文字ごとに改行するコードを紹介しました。
今回は、コンマで改行する方法を考えてみます。

文字列内にコンマが複数個ある場合もあるので、
文字列の1文字目から最後まで
1文字ずつ「,」と等しいかどうかを
If文で判定していきます。

もし、「,」と等しいなら
前回の記事と同様にChr(10)を文字列に追加していきます。

コードはこちら

文字列を半角コンマで改行するコード:

Sub macro180609a()
'文字列を改行する
'半角コンマで区切る

    Dim i As Integer
    Dim c As Object
    Dim Str As String
    Dim Rng As Range
   
    Set Rng = ActiveSheet.Range("A1:A2") '範囲
   
    For Each c In Rng
        Str = ""
        For i = 1 To Len(c.Text)
            If Mid(c, i, 1) = "," Then
                Str = Str & Mid(c, i, 1) & Chr(10)
             Else
                Str = Str & Mid(c, i, 1)
            End If
        Next i
        Cells(c.Row, c.Column) = Str
    Next c
   
End Sub

下の画像の状態で上記のコードを実行
Vba20180609a

実行結果:
Vba20180609b

実行結果で改行しなかった部分がありますね。
改行しなかったコンマは良く見ると全角です。
上記のコードでは半角のコンマでしか改行しません。

半角と全角の2種類のコンマを両方拾うには
If文の条件にOr演算子を使って次のようにします。

c = "," Or c = ","

上記はcが半角コンマか全角コンマかどちらかのときTrueを返します。

この条件でのコードはこちら

文字列を半/全角コンマで改行するコード:

Sub macro180609b()
'文字列を改行する
'半角、全角コンマで区切る

    Dim i As Integer
    Dim c As Object
    Dim Str As String
    Dim Rng As Range
   
    Set Rng = ActiveSheet.Range("A1:A2") '範囲
   
    For Each c In Rng
        Str = ""
        For i = 1 To Len(c.Text)
            If Mid (c, i, 1) = "," Or Mid(c, i, 1) = "," Then
                 Str = Str & Mid(c, i, 1) & Chr(10)
            Else
                Str = Str & Mid(c, i, 1)
            End If
        Next i
        Cells(c.Row, c.Column) = Str
    Next c
   
End Sub

下の画像の状態で上記のコードを実行
Vba20180609a

実行結果:
Vba20180609c

半角、全角両方のコンマで改行されました。
Or演算子は複数個を重ねて使えるので、
If文の条件に次のように指定することで
改行したい文字の種類を
増やすことが出来ます。

c = "," Or c = "," Or c = "、"

VBAにしろワークシート関数にしろ
半角と全角の違いで上手くいかなくなることは多いので
厄介ですね。

|

« Break a character string in a cell | トップページ | Break a character string in a cell with a comma »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: セル内の文字列をコンマで改行する:

« Break a character string in a cell | トップページ | Break a character string in a cell with a comma »