ExcelVBAで改行ごとにセルの値を分割する

スポンサーリンク

セルの値を改行ごとに分割する

以前「選択したセルの内容を統合するVBAコード」で複数セルの値を改行した状態で一つのセルに入力するVBAコードを紹介しましたが、表の編集をしていると、逆にセルの値を改行ごとに分割する必要がありました。

今回はその際に考えたセルの値を改行ごとに分割するVBAコードを紹介します。

セルの値を分割する手順について

Excelのセルにおける改行は「vbLf」で表わされます。
今回は文字列の後ろから最初に出てくる「vbLf」の位置を確認し、改行後の文字列を一つ下のセルに代入するVBAコードを考えました。

また、この操作は改行コード「vbLf」が対象となるセルからなくなるまで続けるようになっています。

スポンサーリンク

セルの値を分割するExcelVBAのサンプルコードと解説

私が作成したコードは以下のようになります。

Sub 改行を含むセルの値を分割する()

Dim str
Set str = ActiveCell ’対象セルを変数に代入する

With str
Do Until InStr(str, vbLf) = 0 ’セルの値の中からVbLfがなくなるまで繰り返す

If .Offset(1, 0).Value <> “” Then ’対象セルの下が空白でなければ
.Offset(1, 0).Insert shift:=xlDown ’対象セルの下に空白セルを挿入する
’.Offset(1, 0).EntireRow.Insert shift:=xlDown ’対象セルの下に空白行を挿入する
End If
.Offset(1, 0).Value = Mid(.Text, InStrRev(.Text, vbLf) + 1)
.Value = Left(.Text, InStrRev(.Text, vbLf) – 1)

Loop
End With

Set str = Nothing

End Sub

対象セルの中にvbLfが含まれているのかはInstr関数を使用していますが、Len関数とReplace関数を使用して以下のように記載することもできます。

Do Until Len(.Text) – Len(Replace(.Text, vbLf, “”)) = 0

条件分岐のIfは対象セルの下のセルに値が入っている場合、空白のセルか行を挿入するコードを加えるために行っています。

コメント