Dieses Tutorial zeigt Ihnen, wie Sie mit der Range TextToColumns-Methode in VBA eine Textzeichenfolge in einer einzelnen Zelle in mehrere Spalten konvertieren
Text in Spalten
Die Bereich.TextToColumns -Methode in VBA ist ein leistungsstarkes Werkzeug zum Bereinigen von Daten, die beispielsweise aus Text- oder CSV-Dateien importiert wurden.
Betrachten Sie das folgende Arbeitsblatt.
Die Daten sind in Excel alle in einer Spalte eingegangen und werden durch Anführungszeichen getrennt.
Sie können die Range TextToColumns-Methode verwenden, um diese Daten in Spalten aufzuteilen.
TextToColumns-Syntax
Ausdruck.TextToColumns (Ziel, Datentyp, TextQualifier, Fortlaufendes Trennzeichen, Tab, Semikolon, Komma, Platz, Sonstiges, AndereChar, FeldInfo, Dezimaltrennzeichen, Tausendertrennzeichen, NachlaufendeMinusZahlen)
Ausdruck
Dies ist der Zellbereich, den Sie teilen möchten - zB: Range("A1:A23").
Alle Argumente in der TextToColumns-Methode sind optional (sie stehen in eckigen Klammern).
Ziel
Wo das Ergebnis abgelegt werden soll - oft überschreiben Sie die Daten und teilen sie an derselben Stelle auf.
Datentyp
Die Art der Textanalyse, die Sie verwenden - es kann entweder xlgetrennt (Standard, wenn weggelassen), oder xlFixedWidth.
TextQualifier
Wenn jedes Feld im Text, den Sie aufteilen, in Anführungszeichen (einfach oder doppelt) steht, müssen Sie angeben, ob es sich um einfache oder doppelte Felder handelt.
KonsekutivesTrennzeichen
Dies ist entweder wahr oder falsch und weist VBA an, 2 gleiche Trennzeichen zusammen zu betrachten, als ob es 1 Trennzeichen wäre.
Tab
Das ist entweder Wahr von Falsch, der Standard ist Falsch - Dies teilt VBA mit, dass die Daten durch ein Tab getrennt sind.
Semikolon
Das ist entwederWahr von Falsch, der Standard ist Falsch - Dies teilt VBA mit, dass die Daten durch ein Semikolon getrennt sind.
Platz
Das ist entweder Wahr von Falsch, der Standard ist Falsch - Dies teilt VBA mit, dass die Daten durch ein Leerzeichen begrenzt sind.
Sonstiges
Das ist entweder Wahr von Falsch, der Standard ist Falsch. Wenn Sie dies auf True setzen, wird das nächste Argument, AndereChar muss angegeben werden.
AndereChar
Dies ist das Zeichen, durch das der Text getrennt wird (zB: oder |).
FeldInfo
Dies ist ein Array, das Informationen über den Datentyp enthält, der getrennt wird. Der erste Wert im Array gibt die Spaltennummer in den Daten an und der zweite Wert gibt die Konstante an, die Sie verwenden werden, um den gewünschten Datentyp darzustellen.
Ein Beispiel für 5 Spalten mit den Datentypen Text, Zahlen und Datum könnte sein:
Array(Array(1, xlTextFormat), Array(2, xlTextFormat), Array(3, xlGeneralFormat), Array(4, xlGeneralFormat), Array(5, xlMDYFormat))
Eine andere Möglichkeit dies darzustellen 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 hat, die xlGeneralFormat (Standard) den Wert 1 hat und die xlMDYFormat den Wert 3 hat.
Dezimaltrennzeichen
Sie können das Dezimaltrennzeichen angeben, das VBA verwenden muss, wenn die Daten Zahlen enthalten. Wenn es weggelassen wird, wird die Systemeinstellung verwendet, die normalerweise ein Punkt ist.
Tausendertrennzeichen
Sie können das Tausendertrennzeichen angeben, das VBA verwenden muss, wenn die Daten Zahlen enthalten. Wenn es weggelassen wird, wird die Systemeinstellung verwendet, die normalerweise ein Komma ist.
NachlaufendeMinusZahlen
Dieses Argument dient hauptsächlich der Kompatibilität mit Daten, die aus älteren Systemen generiert werden, bei denen oft ein Minuszeichen nach der Zahl stand und nicht davor. Sie sollten dies auf True setzen, wenn hinter negativen Zahlen das Minuszeichen steht. Der Standardwert ist False.
Konvertieren von Text in Spalten
Das folgende Verfahren konvertiert die obigen Excel-Daten in Spalten.
12345678910111213141516 | SubtextToCol1()Range("A1:A25").TextToColumns _Ziel:=Bereich("A1:A25"),Datentyp:=xlDelimited, _TextQualifier:=xlDoubleQuote, _ConsecutiveDelimiter:=Wahr, _Tab:=Falsch, _Semikolon:=Falsch, _Komma:=Falsch,Leerzeichen:=Wahr, _Sonstiges:=Falsch, _FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _Dezimaltrennzeichen:="." , _TausendTrennzeichen:=",", _TrailingMinusNumbers:=TrueEnd Sub |
Im obigen Verfahren haben wir alle Parameter ausgefüllt. Viele der Parameter werden jedoch auf false oder auf die Standardeinstellung gesetzt und sind nicht erforderlich. Eine sauberere Version des obigen Verfahrens ist unten aufgeführt. Sie müssen die Parameternamen verwenden, um anzugeben, welche Parameter wir verwenden.
1234567 | SubtextToCol2()Range("A1:A25").TextToColumns _Datentyp:=xlDelimited, _TextQualifier:=xlDoubleQuote, _ConsecutiveDelimiter:=Wahr, _Leerzeichen:=wahr,End Sub |
Es gibt nur 4 Parameter, die tatsächlich benötigt werden - die Daten werden durch ein doppeltes Anführungszeichen getrennt, aufeinanderfolgende Anführungszeichen sollen als eins behandelt werden 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 eingeben, um den Platz des Parameters zu speichern. Sie müssen nur Informationen bis zum letzten Parameter eingeben, den Sie verwenden - in diesem Fall das Leerzeichen, das die Daten trennt, das der 8. Parameter ist.
123 | SubtextToCol3()Range("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , , TrueEnd Sub |
Sobald Sie eines der oben genannten Verfahren ausführen, werden die Daten gemäß der folgenden Grafik getrennt.