Text oder Zahlen aus einer Excel-Zelle entfernen

  • Teile Das
Michael Brown

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 Function

    VBA-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 Function

    Bei 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:

    TEXTJOIN("", TRUE, IF(ISERR(MID( Zelle , ROW(INDIRECT("1:"&LEN( Zelle ) )), 1) *1), MID( Zelle , ROW(INDIRECT("1:"&LEN( Zelle ))), 1), ""))

    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 Function

    VBA-Code 2:

    Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Wie 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 EndFunktion

    VBA-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 Function

    Unsere 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:

    1. Auf der Ablebits Daten auf der Registerkarte Text Gruppe, klicken Sie auf entfernen > Zeichen entfernen .

  • Wählen Sie im Fenster des Add-Ins den Quellbereich aus, wählen Sie die Option Zeichensätze entfernen Option und wählen Sie entweder Text Zeichen oder Numerisch Zeichen in der Dropdown-Liste.
  • Hit entfernen und genießen Sie das Ergebnis :)
  • 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)

    Michael Brown ist ein begeisterter Technologie-Enthusiast mit einer Leidenschaft für die Vereinfachung komplexer Prozesse mithilfe von Softwaretools. Mit mehr als einem Jahrzehnt Erfahrung in der Technologiebranche hat er seine Fähigkeiten in Microsoft Excel und Outlook sowie Google Sheets und Docs verfeinert. Michaels Blog widmet sich dem Teilen seines Wissens und seiner Expertise mit anderen und bietet leicht verständliche Tipps und Tutorials zur Verbesserung von Produktivität und Effizienz. Egal, ob Sie ein erfahrener Profi oder ein Anfänger sind, Michaels Blog bietet wertvolle Einblicke und praktische Ratschläge, wie Sie diese wichtigen Softwaretools optimal nutzen können.