Inhaltsverzeichnis
In diesem Tutorial lernen Sie, wie Sie Text und Zahlen in Excel mit Hilfe von nativen Formeln und benutzerdefinierten Funktionen in zwei separate Spalten aufteilen können.
Stellen Sie sich Folgendes vor: Sie erhalten Rohdaten zur Analyse und stellen fest, dass in einer Spalte Zahlen mit Text vermischt sind. In den meisten Situationen ist es sicherlich bequemer, sie in getrennten Spalten zu haben, um sie genauer zu untersuchen.
Wenn Sie mit homogenen Daten arbeiten, können Sie wahrscheinlich die Funktionen LEFT, RIGHT und MID verwenden, um dieselbe Anzahl von Zeichen an derselben Position zu extrahieren. Das ist jedoch ein ideales Szenario für Labortests. Im wirklichen Leben haben Sie es wahrscheinlich mit ungleichen Daten zu tun, bei denen Zahlen vor, nach oder zwischen dem Text stehen. Die folgenden Beispiele bieten Lösungen für genau diese FälleFall.
Entfernen von Text und Beibehalten von Zahlen in Excel-Zellen
Die Lösung funktioniert in Excel 365, Excel 2021 und Excel 2019
Microsoft Excel 2019 hat einige neue Funktionen eingeführt, die in früheren Versionen nicht verfügbar sind, und wir werden eine dieser Funktionen, nämlich TEXTJOIN, verwenden, um Textzeichen aus einer Zelle mit Zahlen zu entfernen.
Die allgemeine Formel lautet:
TEXTJOIN("", TRUE, IFERROR(MID( Zelle , ROW(INDIRECT("1:"&LEN( Zelle ))), 1) *1, ""))In Excel 365 und 2021 funktioniert das auch:
TEXTJOIN("", TRUE, IFERROR(MID( Zelle , SEQUENZ(LEN( Zelle )), 1) *1, ""))Auf den ersten Blick mögen die Formeln ein wenig einschüchternd wirken, aber sie funktionieren :)
Um z. B. Text aus den Zahlen in A2 zu entfernen, geben Sie eine der folgenden Formeln in B2 ein und kopieren sie dann in so viele Zellen wie nötig.
In Excel 365 - 2019:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1, ""))
In Excel 2019 muss sie als Array-Formel mit Strg + Umschalt + Enter eingegeben werden, in Excel mit dynamischem Array funktioniert sie wie eine normale Formel, die mit der Enter-Taste abgeschlossen wird.
In Excel 365 und 2021:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
Als Ergebnis werden alle Textzeichen aus einer Zelle entfernt und die Zahlen bleiben erhalten:
Wie diese Formel funktioniert:
Um die Logik besser zu verstehen, sollten wir die Formel von innen heraus untersuchen:
Sie verwenden entweder ROW(INDIRECT("1:"&LEN(string))) oder SEQUENCE(LEN(string)), um eine Zahlenfolge zu erstellen, die der Gesamtzahl der Zeichen in der Quellzeichenkette entspricht, und füttern dann die MID-Funktion mit diesen fortlaufenden Zahlen als Startnummern. In B2 sieht dieser Teil der Formel wie folgt aus:
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
Die MID-Funktion extrahiert jedes Zeichen aus A2, beginnend mit dem allerersten, und gibt sie als Array zurück:
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
Dieses Array wird mit 1 multipliziert. Numerische Werte bleiben unverändert erhalten, während die Multiplikation eines nicht-numerischen Zeichens zu einem Fehler #VALUE! führt:
{2;1;0;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;}
Die Funktion IFERROR behandelt diese Fehler und ersetzt sie durch leere Zeichenfolgen:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
Dieses endgültige Array wird der Funktion TEXTJOIN übergeben, die die nicht leeren Werte im Array verkettet ( ignore_empty Argument auf TRUE gesetzt) mit einer leeren Zeichenkette ("") als Trennzeichen:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
Tipp: Für Excel 2016 - 2007 gibt es auch eine Lösung, aber die Formel ist viel komplexer. Sie finden sie in diesem Tutorial: Wie man Zahlen in Excel extrahiert.
Benutzerdefinierte Funktion zum Entfernen von Text aus Zahlen
Die Lösung funktioniert für alle Excel-Versionen
Wenn Sie eine ältere Version von Excel verwenden oder sich die obigen Formeln nicht merken können, können Sie auch eine eigene Funktion mit einer einfacheren Syntax und einem benutzerfreundlichen Namen erstellen, z. B. Text entfernen Die benutzerdefinierte Funktion (UDF) kann auf zwei Arten geschrieben werden:
VBA-Code 1:
Hier wird jedes Zeichen in der Quellzeichenkette einzeln betrachtet und geprüft, ob es numerisch ist oder nicht. Ist es eine Zahl, wird das Zeichen der resultierenden Zeichenkette hinzugefügt.
Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End FunctionVBA-Code 2:
Der Code erstellt ein Objekt zur Verarbeitung eines regulären Ausdrucks. Mit RegExp entfernen wir alle Zeichen außer den Ziffern 0-9 aus der Quellzeichenkette.
Function RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End FunctionBei kleinen Arbeitsblättern werden beide Codes gleich gut funktionieren, bei großen Arbeitsblättern, bei denen die Funktion Hunderte oder Tausende Male aufgerufen wird, wird Code 2, der VBScript.RegExp verwendet, schneller funktionieren.
Die detaillierten Schritte zum Einfügen des Codes in Ihre Arbeitsmappe finden Sie hier: How to insert VBA code in Excel.
Welchen Ansatz Sie auch immer wählen, aus der Sicht des Endbenutzers ist die Funktion zum Löschen von Text und zum Hinterlassen von Zahlen so einfach wie folgt:
RemoveText(zeichenkette)Um zum Beispiel nicht-numerische Zeichen aus Zelle A2 zu entfernen, lautet die Formel in B2:
=EntfernenText(A2)
Kopieren Sie es einfach in die Spalte, und Sie erhalten dieses Ergebnis:
Hinweis: Sowohl die nativen Formeln als auch die benutzerdefinierte Funktion geben ein numerische Zeichenfolge Um sie in eine Zahl umzuwandeln, multiplizieren Sie das Ergebnis mit 1, fügen Sie eine Null hinzu oder verpacken Sie die Formel in die Funktion WERT. Beispiel::
=EntfernenText(A2) + 0
=VALUE(RemoveText(A2))
Entfernen von Zahlen aus einer Textzeichenfolge in Excel
Die Lösung funktioniert in Excel 365, Excel 2021 und Excel 2019
Die Formeln zum Entfernen von Zahlen aus einer alphanumerischen Zeichenkette ähneln denen, die im vorherigen Beispiel besprochen wurden.
Für Excel 365 - 2019:
Denken Sie in Excel 2019 daran, es zu einem Matrixformel durch gleichzeitiges Drücken der Tasten Strg + Shift + Enter.
Für Excel 365 und 2021:
TEXTJOIN("", TRUE, IF(ISERROR(MID( Zelle , SEQUENZ(LEN( Zelle 1) *1), MID( Zelle , SEQUENZ(LEN( Zelle )), 1), ""))Um zum Beispiel Zahlen aus einer Zeichenkette in A2 zu entfernen, lautet die Formel:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT("1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
Oder
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
Das Ergebnis ist, dass alle Zahlen aus einer Zelle entfernt werden und die Textzeichen erhalten bleiben:
Wie in der obigen Abbildung zu sehen ist, entfernt die Formel numerische Zeichen an jeder beliebigen Stelle einer Zeichenkette: am Anfang, am Ende und in der Mitte. Es gibt jedoch eine Einschränkung: Wenn eine Zeichenkette beginnt mit einer Zahl, gefolgt von einem Leerzeichen wird dieses Leerzeichen beibehalten, was zu dem Problem der führenden Leerzeichen führt (wie in B2).
So werden Sie zusätzliche Leerzeichen vor dem Text die Formel wie folgt in die TRIM-Funktion ein:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
Nun, Ihre Ergebnisse sind absolut perfekt!
Wie diese Formel funktioniert:
Im Wesentlichen funktioniert die Formel genauso wie im vorherigen Beispiel. Der Unterschied besteht darin, dass aus dem endgültigen Array, das der Funktion TEXTJOIN zugeführt wird, Zahlen und nicht Text entfernt werden müssen. Dazu verwenden wir die Kombination der Funktionen IF und ISERROR.
Wie Sie sich erinnern, erzeugt MID(...)+0 ein Array von Zahlen und #VALUE!-Fehlern, die Textzeichen an denselben Positionen darstellen:
{2;1;0;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;#WERT!;}
Die Funktion ISERROR fängt die Fehler ab und übergibt das resultierende Array von booleschen Werten an IF:
{FALSCH;FALSCH;FALSCH;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR}
Wenn die IF-Funktion TRUE (einen Fehler) sieht, fügt sie das entsprechende Textzeichen mit Hilfe einer anderen MID-Funktion in das verarbeitete Array ein. Wenn die IF-Funktion FALSE (eine Zahl) sieht, ersetzt sie diese durch eine leere Zeichenkette:
{"";"";"";" "; "S"; "u"; "n"; "s"; "e"; "t";" "; "R"; "o"; "a"; "d"}
Dieses endgültige Array wird an TEXTJOIN weitergegeben, damit es die Textzeichen zusammenfügt und das Ergebnis ausgibt.
Benutzerdefinierte Funktion zum Entfernen von Zahlen aus Text
Die Lösung funktioniert für alle Excel-Versionen
Da eine robuste Formel einfach gehalten werden sollte, werde ich den Code der benutzerdefinierten Funktion (UDF) teilen, um alle numerischen Zeichen zu entfernen.
VBA-Code 1:
Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End FunctionVBA-Code 2:
Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End FunctionWie bei der Funktion RemoveText sollte der zweite Code besser in großen Arbeitsblättern verwendet werden, um die Leistung zu optimieren.
Sobald der Code zu Ihrer Arbeitsmappe hinzugefügt wurde, können Sie mit dieser benutzerdefinierten Funktion alle numerischen Zeichen aus einer Zelle entfernen:
RemoveNumbers(string)In unserem Fall lautet die Formel in B2:
=EntferneNummern(A2)
Um führende Leerzeichen abzuschneiden, verschachteln Sie die benutzerdefinierte Funktion innerhalb von TRIM, wie Sie es bei einer nativen Formel tun würden:
=TRIM(RemoveNumbers(A2))
Zahlen und Text in separate Spalten aufteilen
In Situationen, in denen man Text und Zahlen in zwei Spalten trennen möchte, wäre es schön, wenn man dies mit einer einzigen Formel bewerkstelligen könnte, nicht wahr? Zu diesem Zweck fügen wir einfach den Code der Text entfernen und RemoveNumbers Funktionen in eine Funktion mit dem Namen SplitTextNumbers oder einfach Teilen oder was immer Sie wollen :)
VBA-Code 1:
Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If EndFunktionVBA-Code 2:
Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else .Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End FunctionUnsere neue benutzerdefinierte Funktion benötigt zwei Argumente:
SplitTextNumbers(string, is_remove_text)Wo is_remove_text ist ein boolescher Wert, der angibt, welche Zeichen entfernt werden sollen:
- TRUE oder 1 - Text entfernen und Zahlen beibehalten
- FALSE oder 0 - Zahlen entfernen und Text beibehalten
Für unseren Beispieldatensatz sehen die Formeln folgendermaßen aus:
Um nicht-numerische Zeichen zu entfernen:
=SplitTextNumbers(A2, TRUE)
Um numerische Zeichen zu löschen:
=SplitTextNumbers(A2, FALSE)
Tipp: Um ein mögliches Problem mit führenden Leerzeichen zu vermeiden, empfehle ich, die Formel, die Zahlen entfernt, immer in die TRIM-Funktion einzuschließen:
=TRIM(SplitTextNumbers(A2, FALSE))
Spezialwerkzeug zum Entfernen von Zahlen oder Text
Für diejenigen, die es nicht unnötig kompliziert haben wollen, zeige ich unsere eigene Methode zum Entfernen von Text oder Zahlen in Excel.
Vorausgesetzt, dass unsere Ultimate Suite zu Ihrem Excel-Ribbon hinzugefügt wurde, gehen Sie wie folgt vor:
- Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf entfernen > Zeichen entfernen .
Tipp: Wenn die Ergebnisse einige führende Leerzeichen enthalten, können Sie diese mit dem Werkzeug Leerzeichen trimmen im Handumdrehen entfernen.
So entfernen Sie Text oder numerische Zeichen aus einer Zeichenfolge in Excel. Ich danke Ihnen für die Lektüre und freue mich darauf, Sie nächste Woche in unserem Blog zu sehen!
Verfügbare Downloads
Text oder Zahlen in Excel entfernen - Beispiele (.xlsm-Datei)
Ultimate Suite - Testversion (.exe-Datei)