2017-02-17 3 views
1

Ich werde schnell sein.VBA Text zu Spalten mit "" Trennzeichen

Ich habe eine Variable 'strLine' mit dem Text:

Das genaue String wird so aussehen:

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

Also, Trennzeichen in meinem Fall ist: "

Wie ich kann Text extrahieren und in Spalten schreiben

Erwartete Ergebnisse in Zellen:

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

Dank

+2

Sie sind Trennzeichen ist ',' nicht '' "' Dann nach der Trennung auf ',' Sie das 'trimmen müssen.". –

Antwort

2

Verwenden Split Funktion, wird es eine 0-basierten Array (ergo +1 in Zellen) zurück:

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 
+2

Sie könnten 'Mid' anstelle von' Replace' verwenden, falls 'Str (i)' darin Zitate enthält –

+0

Fantastic, Thanks @ R3uk – Andy

1

Sie können Split verwenden Sie den Text in ein Array aufteilen entfernen, dann die " von Anfang und das Ende der Teile mit Mid:

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

Anmerkung: Möglicherweise möchten Sie einige Prüfungen hinzufügen, um sicherzustellen, dass am Anfang und am Ende ein " vorhanden ist, bevor Sie sie entfernen.

1

bearbeitet eine StrLine Schleife zu simulieren:

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 
+0

Einige Erklärungen würden die Antwortqualität um einiges erhöhen. Es ist jetzt als Low Quality Post gekennzeichnet. – Starx

+0

Wie verwende ich, um 'A1' für nächste Zeichenfolge in For-Schleife auf nächste Zeile zu wechseln? – Andy

+0

Woher liest du diese Zeichenfolgen? – user3598756

Verwandte Themen