Rückkehr in VBA-Code-Beispiele

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. text zu spalten zitate 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)

vba texttocolumns syntax

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. text zu spalten 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! vba save as


Learn More!