简体   繁体   中英

VBA text to columns with “” delimiters

I will be quick.

I have a variable 'strLine' with text:

The exact string will look like that:

"Text1","Text2","Text3","Text4","Text5"

So, delimiter in my case is: "

How I can extract text and write it in columns.

Expecting results in cells:

A1=Text1
B1=Text2
C1=Text3
D1=Text4
E1=Text5

Thanks

Use Split function, it'll return a 0-based array (ergo +1 in cells) :

Sub test_Andy()

Dim StrLine As String
Dim Str() As String

StrLine = Range("A2").Value 'If your value is in A2
'If you input the value manually, not really practical with so much "
StrLine = Chr(34) & "Text1" & Chr(34) & "," & Chr(34) & "Text2" & Chr(34) & "," & Chr(34) & "Text3" & Chr(34) & "," & Chr(34) & "Text4" & Chr(34) & "," & Chr(34) & "Text5" & Chr(34)
Debug.Print StrLine '"Text1","Text2","Text3","Text4","Text5"

Str = Split(StrLine, ",")

Dim i As Integer
For i = LBound(Str) To UBound(Str)
    Cells(1, i + 1) = Str(i)
    Cells(2, i + 1) = Replace(Str(i), Chr(34), vbNullString)
Next i

End Sub

You can use Split to split the text into an array, then remove the " from the start and the end of the parts using Mid :

strText = """Text1"",""Text2"",""Text3"",""Text4"",""Text5"""
aSplit = Split(strText, ",")
For Each strCurrent in aSplit
    MsgBox Mid(strCurrent, 2, Len(strCurrent) - 2)
Next

Remark : You might want to add some checks to ensure that there is a " at the start and end before removing them.

edited to simulate a StrLine loop:

Dim iRow As Long
irow = 1

For Each StrLine In StrLines '<--' assuming a loop through many StrLines
    Str = Split(Replace(StrLine, """", ""), ",")
    Cells(iRow, 1).Resize(, UBound(Str) - LBound(Str)).Value = Str
    iRow = iRow + 1
Next

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM