Excel: Nummer aus Textstring extrahieren

  • Teile Das
Michael Brown

Das Tutorial zeigt, wie man mit Hilfe von Formeln und dem Extraktionswerkzeug Zahlen aus verschiedenen Textzeichenfolgen in Excel extrahiert.

Wenn es darum geht, einen Teil einer Textzeichenfolge einer bestimmten Länge zu extrahieren, bietet Excel drei Teilstring-Funktionen (Links, Rechts und Mitte), um die Aufgabe schnell zu erledigen. Wenn es darum geht, Zahlen aus einer alphanumerischen Zeichenfolge zu extrahieren, bietet Microsoft Excel... nichts.

Um in Excel eine Zahl aus einer Zeichenkette zu ermitteln, braucht man ein wenig Einfallsreichtum, ein wenig Geduld und eine Reihe verschiedener, ineinander verschachtelter Funktionen. Sie können aber auch das Tool Extrahieren verwenden und die Aufgabe mit einem Mausklick erledigen. Im Folgenden finden Sie alle Einzelheiten zu beiden Methoden.

    Wie extrahiere ich eine Zahl aus dem Ende einer Zeichenkette?

    Wenn Sie eine Spalte mit alphanumerischen Zeichenfolgen haben, in der nach dem Text eine Zahl steht, können Sie die folgende Formel verwenden, um sie zu erhalten.

    RECHT( Zelle , LEN( Zelle ) - MAX(IF(ISNUMBER(MID( Zelle , ROW(INDIRECT("1:"&LEN( Zelle ))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( Zelle ))), 0)))

    Auf die Logik der Formel werden wir später noch eingehen, aber jetzt ersetzen Sie einfach Zelle mit einem Verweis auf die Zelle, die die ursprüngliche Zeichenfolge enthält (in unserem Fall A2), und geben Sie die Formel in eine beliebige leere Zelle in derselben Zeile ein, beispielsweise in B2:

    =RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))

    Wenn eine Zeichenkette auch Zahlen am Anfang oder in der Mitte enthält, werden diese ignoriert:

    Die Extraktion wird mit der Funktion RIGHT durchgeführt, die zur Kategorie der Textfunktionen gehört. Die Ausgabe dieser Funktion ist immer Text In unserem Fall ist das Ergebnis ein numerische Teilzeichenkette , was in Excel ebenfalls ein Text und keine Zahl ist.

    Wenn Sie als Ergebnis eine Nummer (die Sie in weiteren Berechnungen verwenden können), dann fügen Sie die Formel in die Funktion WERT ein oder führen eine arithmetische Operation durch, die das Ergebnis nicht verändert, z. B. Multiplizieren mit 1 oder Addieren von 0. Um Fehler in den Zeichenketten abzufangen, die keine einzelne Zahl enthalten, verwenden Sie die Funktion IFERROR, z. B:

    =IFERROR(VALUE(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))), "")

    oder

    =IFERROR(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2)))), 0))) +0, "")

    Hinweis: In Excel mit dynamischem Array (Office 365 und 2021) geben Sie die Formel wie gewohnt mit der Eingabetaste ein. In Excel 2019 und früher funktioniert sie nur als Array-Formel, also denken Sie daran, Strg + Umschalt + Eingabetaste zu drücken, um sie abzuschließen.

    Wie diese Formel funktioniert:

    Um eine Zahl aus einer alphanumerischen Zeichenkette zu extrahieren, müssen Sie zunächst wissen, wo die Extraktion beginnen soll. Die Position des letzten nichtnumerischen Zeichens in einer Zeichenkette wird mit Hilfe dieser kniffligen Formel bestimmt:

    MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))

    Um die Logik zu verstehen, sollten wir sie von innen heraus untersuchen:

    Die Kombination ROW(INDIRECT("1:"&LEN(A2))) erzeugt eine Folge von Zahlen, die der Gesamtzahl der Zeichen in der Quellzeichenkette (A2) entspricht, und wir geben diese fortlaufenden Zahlen an MID als Startnummern weiter:

    MID(A2, {1;2;3;4;5;6;7;8}, 1)

    Die MID-Funktion holt jedes einzelne Zeichen aus A2 und gibt es als Array zurück:

    {"0";"5";"-";"E";"C";"-";"0";"1"}

    Da MID eine Textfunktion ist, ist ihre Ausgabe immer Text (wie Sie sehen können, sind alle Zeichen in Anführungszeichen eingeschlossen). Um numerische Einsen in Zahlen umzuwandeln, multiplizieren wir das Array mit 1 (die doppelte Negation --MID() hat den gleichen Effekt). Das Ergebnis dieser Operation ist ein Array von Zahlen und #VALUE!-Fehlern, die nicht-numerische Zeichen darstellen:

    ISNUMBER({0;5;#WERT!;#WERT!;#WERT!;#WERT!;0;1})

    Die Funktion ISNUMBER wertet jedes Element des Arrays aus und gibt ihr Urteil in Form von booleschen Werten ab - TRUE für Zahlen, FALSE für alles andere:

    {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}

    Dieses Array geht an den logischen Test der IF-Funktion, bei dem jedes Element des Arrays mit FALSE verglichen wird:

    IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)

    Für jedes FALSE (nicht numerischer Wert) gibt eine weitere Funktion ROW(INDIRECT()) die relative Position in der Zeichenkette zurück. Für jedes TRUE (numerischer Wert) wird eine Null zurückgegeben. Das resultierende Array sieht wie folgt aus:

    {0;0;3;4;5;6;0;0}

    Der Rest ist einfach: Die Funktion MAX findet die höchste Zahl im obigen Array, also die Position des letzten nicht-numerischen Wertes in der Zeichenkette (in unserem Fall 6). Subtrahieren Sie einfach diese Position von der Gesamtlänge der Zeichenkette, die von LEN zurückgegeben wird, und übergeben Sie das Ergebnis an RIGHT, damit es weiß, wie viele Zeichen von der rechten Seite der Zeichenkette zu extrahieren sind:

    RECHTS(A2, LEN(A2) - 6)

    Erledigt!

    Wie extrahiere ich eine Zahl vom Anfang einer Textzeichenfolge?

    Wenn Sie mit Datensätzen arbeiten, in denen Text nach der Zahl erscheint, können Sie die Zahl mit dieser allgemeinen Formel aus dem Anfang einer Zeichenfolge extrahieren:

    LINKS( Zelle , MATCH(FALSE, ISNUMBER(MID( Zelle , ROW(INDIRECT("1:"&LEN( Zelle )+1)), 1) *1), 0) -1)

    Mit der ursprünglichen Zeichenkette in A2, verwenden Sie die folgende Formel, um die Zahl zu erhalten:

    =LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1))), 1) *1), 0) -1)

    Unabhängig davon, wie viele Ziffern in der Mitte oder am Ende stehen, wird nur die Anfangszahl extrahiert:

    Hinweis: In Excel 365 und Excel 2021 funktioniert aufgrund der Unterstützung für dynamische Arrays eine normale Formel. In Excel 2019 und früher müssen Sie Strg + Umschalt + Enter drücken, um die Formel explizit zu einer Matrixformel .

    Wie diese Formel funktioniert:

    Auch hier verwenden wir die Kombination aus ROW-, INDIRECT- und LEN-Funktionen, um eine Zahlenfolge zu erstellen, die der Gesamtzahl der Zeichen in der Quellzeichenkette plus 1 entspricht (die Rolle dieses zusätzlichen Zeichens wird etwas später deutlich).

    ROW(INDIRECT("1:"&LEN(A2)+1))

    MID und ISNUMBER erledigen dieselbe Aufgabe wie im vorherigen Beispiel - MID zieht einzelne Zeichen und ISNUMBER konvertiert sie in logische Werte. Das resultierende Array von TRUE's und FALSE's geht als Lookup-Array an die MATCH-Funktion:

    MATCH(FALSE, {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE}, 0)

    MATCH berechnet eine relative Position des ersten FALSE, was uns die Position des ersten nicht numerischen Zeichens in der Zeichenkette liefert (3 in A2). Um die vorangehenden Zahlen zu extrahieren, subtrahieren wir 1 von der Position des ersten Textzeichens und geben die Differenz an den num_chars Argument der Funktion LEFT:

    LINKS(A2, 3-1)

    Nun zurück zu einem "zusätzlichen" Zeichen in der von ROW(INDIRECT()+1)) erzeugten Sequenz. Wie Sie bereits wissen, liefert diese Sequenz die Ausgangspunkte für die MID-Funktion. Ohne +1 würde MID genau so viele Zeichen extrahieren, wie die ursprüngliche Zeichenkette enthält. Wenn die Zeichenkette nur Zahlen enthält, wird ISNUMBER nur TRUE's zurückgeben, während MATCH mindestens ein FALSE benötigt. Um dies sicherzustellen, fügen wir einmehr Zeichen auf die Gesamtlänge der Zeichenkette, die die MID-Funktion in eine leere Zeichenkette umwandeln würde. In B7 gibt MID zum Beispiel dieses Array zurück:

    {"1"; "2"; "3"; "4";""}

    Hinweis: Wie die Funktion RECHTS gibt auch LINKS eine numerische Teilzeichenkette Um das Ergebnis als Zahl und nicht als numerische Zeichenfolge zu erhalten, schachteln Sie die Formel in die VALUE-Funktion oder multiplizieren Sie das Ergebnis mit 1, wie im ersten Beispiel gezeigt.

    Wie man eine Zahl von einer beliebigen Position in einer Zeichenkette erhält

    Wenn Ihre Aufgabe das Extrahieren einer Zahl aus einer beliebigen Zeichenkette erfordert, können Sie die folgende verblüffende Formel verwenden, die im MrExcel-Forum veröffentlicht wurde:

    =SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)) * ROW(INDIRECT("1:"&LEN(A2))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A2)))/10)

    Dabei ist A2 die ursprüngliche Textzeichenfolge.

    Diese Formel aufzuschlüsseln würde einen separaten Artikel erfordern, daher kannst du sie einfach in dein Arbeitsblatt kopieren, um sicherzustellen, dass sie wirklich funktioniert :)

    Bei der Prüfung der Ergebnisse fällt jedoch ein unbedeutender Nachteil auf: Wenn die Quellzeichenkette keine Zahl enthält, gibt die Formel Null zurück, wie in Zeile 6 im obigen Screenshot. Um dies zu beheben, können Sie die Formel in die IF-Anweisung einschließen, deren logischer Test prüft, ob die Quellzeichenkette eine Zahl enthält. Ist dies der Fall, extrahiert die Formel die Zahl, andernfalls gibt sie eine leereString:

    =IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("$1:$"&LEN(A2))),1))* ROW(INDIRECT("$1:$"&LEN(A2))),0), ROW(INDIRECT("$1:$"&LEN(A2))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A2)))/10),"")

    Wie der folgende Screenshot zeigt, funktioniert die verbesserte Formel hervorragend (ein großes Lob an Alex, unseren Excel-Guru, für diese Verbesserung):

    Im Gegensatz zu den vorherigen Beispielen ist das Ergebnis dieser Formel Nummer Um sich davon zu überzeugen, beachten Sie einfach die rechtsbündigen Werte in Spalte B und die abgeschnittenen führenden Nullen.

    Tipp: In Excel 365 - Excel 2019 gibt es eine viel einfachere Lösung mit Hilfe der Funktion TEXTJOIN. Siehe Wie man Text entfernt und Zahlen behält.

    Extrahieren einer Zahl aus einer Textzeichenfolge mit Ultimate Suite

    Wie Sie gerade gesehen haben, gibt es keine triviale Excel-Formel, um Zahlen aus einer Textzeichenfolge zu ziehen. Wenn Sie Schwierigkeiten haben, die Formeln zu verstehen oder sie für Ihre Datensätze zu optimieren, gefällt Ihnen vielleicht diese einfache Methode, um Zahlen aus einer Zeichenfolge in Excel zu ziehen.

    Mit unserer Ultimate Suite, die dem Excel-Band hinzugefügt wurde, können Sie auf diese Weise schnell Zahlen aus beliebigen alphanumerischen Zeichenfolgen abrufen:

    1. Gehen Sie zum Ablebits Daten tab> Text Gruppe, und klicken Sie auf Auszug :

    2. Markieren Sie alle Zellen mit den Quellzeichenfolgen.
    3. Wählen Sie im Fensterbereich des Extraktionswerkzeugs die Option Nummern ausziehen Optionsschaltfläche.
    4. Je nachdem, ob die Ergebnisse Formeln oder Werte sein sollen, wählen Sie die Option Als Formel einfügen oder lassen Sie es unausgewählt (Standardeinstellung).

      Ich empfehle, dieses Kästchen zu markieren, wenn Sie möchten, dass die extrahierten Zahlen automatisch aktualisiert werden, sobald Änderungen an den Quellzeichenfolgen vorgenommen werden. Wenn Sie möchten, dass die Ergebnisse unabhängig von den ursprünglichen Zeichenfolgen sind (z. B. für den Fall, dass Sie planen, die Quelldaten zu einem späteren Zeitpunkt zu entfernen), dann markieren Sie dieses Kästchen nicht.

    5. Klicken Sie auf die Ergebnisse einfügen Taste. Erledigt!

    Wie im vorherigen Beispiel sind die Ergebnisse der Extraktion Zahlen Das heißt, Sie können sie zählen, summieren, mitteln oder andere Berechnungen mit ihnen durchführen.

    In diesem Beispiel haben wir uns entschieden, die Ergebnisse wie folgt einzufügen Werte und das Add-in hat genau das getan, was verlangt wurde:

    Wenn die Als Formel einfügen markiert war, würde man eine Formel Laden Sie einfach die Testversion von Ultimate Suite herunter und überzeugen Sie sich selbst :)

    Verfügbare Downloads

    Excel-Extraktnummer - Beispiel-Arbeitsmappe (.xlsx-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.