VBA – Text zu Spalten
In diesem Tutorial erfahren Sie, wie Sie mit der Range-TextToColumns-Methode in VBA eine Textzeichenfolge in einer einzelnen Zelle in mehrere Spalten umwandeln können
Text zu Spalten
Die Methode Range.TextToColumns in VBA ist ein leistungsfähiges Werkzeug zum Bereinigen von Daten, die z. B. aus Text- oder CSV-Dateien importiert wurden.
Betrachten Sie das folgende Arbeitsblatt. Die Daten wurden in Excel in einer einzigen Spalte eingegeben und sind durch Anführungszeichen getrennt.
Sie können die Methode Range TextToColumns verwenden, um diese Daten in Spalten aufzuteilen.
TextToColumns-Syntax
Expression.TextToColumns(Destination, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers)
Expression
Dies ist der Bereich der Zellen, die Sie aufteilen möchten – z. B.: Range(„A1:A23“).
Alle Argumente in der Methode TextToColumns sind optional (sie stehen in eckigen Klammern).
Destination
Wo das Ergebnis abgelegt werden soll. Oft überschreiben Sie die Daten und teilen sie an der gleichen Stelle auf.
DataType
Die Art der Textverarbeitung, die Sie verwenden. Es kann entweder xlDelimited (Standard, wenn nicht angegeben) oder xlFixedWidthsein.
TextQualifier
Wenn Sie Anführungszeichen (einfach oder doppelt) um jedes Feld im Text, den Sie aufteilen, haben, müssen Sie angeben, ob sie einfach oder doppelt sind.
ConsequtiveDelimiter
Dies ist entweder wahr oder falsch und weist VBA an, 2 gleiche Trennzeichen zusammen zu betrachten, als ob es sich um ein Trennzeichen handelt.
Tab
Dies ist entweder True oder False, die Voreinstellung ist False – dies teilt VBA mit, dass die Daten durch ein Tabulatorzeichen abgegrenzt sind.
Semicolon
Dies ist entweder True or False (Der Standardwert ist False). Damit wird VBA mitgeteilt, dass die Daten durch ein Semikolon getrennt werden.
Space
Dies ist entweder True or False (Der Standardwert ist False). Damit wird VBA mitgeteilt, dass die Daten durch ein Leerzeichen abgegrenzt werden.
Other
Dies kann entweder True oder False sein (die Voreinstellung ist False). Wenn Sie dies auf True setzen, muss das nächste Argument, OtherChar, angegeben werden.
OtherChar
Dies ist das Zeichen, durch das der Text getrennt wird (z. B. ^ oder |).
FieldInfo
Dies ist ein Array mit Informationen über die Art der Daten, die getrennt werden. Der erste Wert im Array gibt die Spaltennummer in den Daten an, und der zweite Wert gibt die Konstante an, die Sie zur Darstellung des gewünschten Datentyps verwenden werden.
Ein Beispiel für 5 Spalten mit den Datentypen Text, Zahlen und Datum könnte Folgendes sein:
Array(Array(1, xlTextFormat), Array(2, xlTextFormat), Array(3, xlGeneralFormat), Array(4, xlGeneralFormat), Array(5, xlMDYFormat))
Eine andere Möglichkeit, dies auszugeben, ist:
Array(Array(1, 2), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 3))
Die Zahlen in der zweiten Spalte sind die Werte der Konstanten, wobei die Konstante xlTextFormat den Wert 2, xlGeneralFormat (Standard) den Wert 1 und xlMDYFormat den Wert 3 hat.
DecimalSeparator
Sie können das Dezimaltrennzeichen angeben, das VBA verwenden muss, wenn die Daten Zahlen enthalten. Wenn Sie es weglassen, wird die Systemeinstellung verwendet, die normalerweise ein Punkt ist.
ThousandsSeparator
Sie können das Tausendertrennzeichen angeben, das VBA verwenden muss, wenn die Daten Zahlen enthalten. Wenn Sie es weglassen, wird die Systemeinstellung verwendet, die in der Regel ein Komma ist.
TrailingMinusNumbers
Dieses Argument dient vor allem der Kompatibilität mit Daten, die von älteren Systemen erzeugt wurden, bei denen das Minuszeichen oft nach der Zahl und nicht davor stand. Sie sollten dies auf True setzen, wenn negative Zahlen ein Minuszeichen hinter sich haben. Der Standardwert ist False.
Konvertieren von Text in Spalten
Die folgende Prozedur wandelt die obigen Excel-Daten in Spalten um.
Sub TextZuSpalten1()
Range("A1:A25").TextToColumns _
Destination:=Range("A1:A25"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=Falsch, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
DecimalSeparator:="." , _
ThousandsSeparator:=",", _
TrailingMinusNumbers:=True
End Sub
In der obigen Prozedur haben wir alle Parameter ausgefüllt. Viele der Parameter sind jedoch auf „false“ oder auf die Standardeinstellung gesetzt und werden nicht benötigt. Im Folgenden Abschnitt wird eine sauberere Version des obigen Verfahrens beschrieben. Sie müssen die Parameternamen verwenden, um anzuzeigen, welche Parameter wir verwenden.
Sub TextZuSpalten2()
Range("A1:A25").TextToColumns _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Space:=True
End Sub
Es gibt nur 4 Parameter, die tatsächlich erforderlich sind. Die Daten werden durch ein doppeltes Anführungszeichen begrenzt, aufeinanderfolgende Anführungszeichen werden als eins behandelt und die Daten werden durch ein Leerzeichen getrennt!
Für eine noch schnellere Codezeile könnten wir die Parameternamen weglassen, aber dann müssten wir Kommas einfügen, um die Stelle des Parameters zu speichern. Sie müssen nur Informationen bis zum letzten Parameter angeben, den Sie verwenden (in diesem Fall das Leerzeichen, das die Daten trennt und der 8. Parameter ist).
Sub TextZuSpalten3()
Range("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , , True
End Sub
Sobald Sie eine der oben genannten Prozeduren ausführen, werden die Daten wie in der folgenden Grafik dargestellt aufgeteilt.
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!