VBA-Text in Spalten

Inhaltsverzeichnis

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.

wave wave wave wave wave