セルの中に改行が入っている場合のセルの分け方

セルの中に改行が入っている状態の値を分けたいことが稀にある。
これはオシロスコープからVISA経由でデータとるときにありがちです。VISA経由で取得最中に分ければいいのかもしれませんが、何か化ける要因になってもあれなので値を取得後にマクロで変換するのに使うために変換マクロを作りました。

マクロの作成

K社のオシロスコープのListerをVISA経由で取得した時の値はセル内の改行にvbLFが使われています。
またCSV形式のように「,」で区切られているため、「vbLfでセルを分け」と「「,」でセル分け」をできるようにします。

●vbLfの入った練習用のマクロ
セルに値を手打ちしようと思いましたが、Alt+EnterだとLFにしかならないらしくvbLfはキーボードでやるのは無理なのかわからないが3分調べても出てこなかったのであきらめてVBAマクロで作成する。 A1セルに作成されます。

Sub vbLF_create()
Dim str As String
Dim str1 As String
Dim Pref() As String
Dim Doom() As String
Dim i As Long
Dim j As Long

str = "a,b,c,d" & vbLf
str = str & "e,f,g,h" & vbLf
str = str & "b,b,c,f"

Cells(1, 1).Value = str

End Sub





●セルを分けるマクロ
改行までの文字列と「,」でセルを分けるためのマクロになります。A2セルから分割されます。

Sub split_create()
Dim str As String
Dim str1 As String
Dim Pref() As String
Dim Doom() As String
Dim i As Long
Dim j As Long

str = Cells(1, 1).Value

Pref = split(str, vbLf)

For i = 0 To UBound(Pref)
Cells(i + 2, 1).Value = Pref(i)
Next i

For i = 0 To UBound(Pref)
str1 = Cells(i + 2, 1).Value
Doom = split(str1, ",")
For j = 0 To UBound(Doom)
Cells(i + 2, j + 2).Value = Doom(j)
Next j
Next i

End Sub






[参考サイト]
●URL
Excel VBAで文字列を分割する:Split | UX MILK
Office TANAKA - Excel VBA Tips[Split関数で文字列を区切る]
VBAで文字列に改行コードが含まれるか判定する | Excel作業をVBAで効率化 (vbabeginner.net)