Ich habe eine Excel-Tabelle mit einer Liste von Zeichenfolgen. Jede Zeichenfolge besteht aus mehreren Wörtern, aber die Anzahl der Wörter in jeder Zeichenfolge ist unterschiedlich.
Gibt es eine Möglichkeit, mithilfe der integrierten Excel-Funktionen (kein VBA) das letzte Wort in jeder Zeichenfolge zu isolieren?
Beispiele:
Bist du als Mensch eingestuft? -> Mensch? Negativ, ich bin ein Fleisch Eis am Stiel -> Eis am Stiel Aziz! Licht! -> Licht!
excel
excel-formula
James
quelle
quelle
Antworten:
Dieser ist getestet und funktioniert (basierend auf Brads ursprünglichem Beitrag):
Wenn Ihre ursprünglichen Zeichenfolgen eine Pipe enthalten könnten "|" Zeichen, dann ersetzen Sie beide oben durch ein anderes Zeichen, das nicht in Ihrer Quelle erscheint. (Ich vermute, Brads Original war kaputt, weil ein nicht druckbares Zeichen in der Übersetzung entfernt wurde).
Bonus: Wie es funktioniert (von rechts nach links):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- Anzahl der Leerzeichen in der ursprünglichen ZeichenfolgeSUBSTITUTE(A1," ","|", ... )
- Ersetzt nur das letzte Leerzeichen durch a|
FIND("|", ... )
- Ermittelt die absolute Position des ersetzten|
(das war das letzte Leerzeichen)Right(A1,LEN(A1) - ... ))
- Gibt danach alle Zeichen zurück|
BEARBEITEN: Um den Fall zu berücksichtigen, in dem der Quelltext keine Leerzeichen enthält, fügen Sie am Anfang der Formel Folgendes hinzu:
Jetzt die gesamte Formel erstellen:
Oder Sie können die
=IF(COUNTIF(A1,"* *")
Syntax der anderen Version verwenden.Wenn die ursprüngliche Zeichenfolge möglicherweise ein Leerzeichen an der letzten Position enthält, fügen Sie eine Trimmfunktion hinzu, während Sie alle Leerzeichen zählen: Machen Sie die Funktion wie folgt:
quelle
Dies ist die Technik, die ich mit großem Erfolg angewendet habe:
Um das erste Wort in einer Zeichenfolge zu erhalten, wechseln Sie einfach von RECHTS nach LINKS
Ersetzen Sie außerdem A1 durch die Zelle, in der sich der Text befindet.
quelle
" "
durch mein Trennzeichen ersetzt. Die beiden100
scheinen es auf eine Zeichenfolge von 100 Zeichen zu beschränken, wenn ich mich nicht irre=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(A1, ".", REPT(".", 100)), 100), ".", ""))
Eine robustere Version von Jerrys Antwort:
Das funktioniert unabhängig von der Länge der Zeichenfolge, den führenden oder nachfolgenden Leerzeichen oder was auch immer und es ist immer noch ziemlich kurz und einfach.
quelle
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
, um die Dateierweiterung zu erhalten.SUBSTITUTE
ermöglicht es, für jeden Charakter zu arbeiten, nicht nur für Leerzeichen.=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),"/",REPT("/",LEN(TRIM(A1)))),LEN(TRIM(A1))),"/",""))
, wobei "/" das Begrenzungszeichen ist." ; "
(ein von Leerzeichen umgebenes Semikolon) mit Eingabewert:"Technology Sprint 24 ; Sprint 4"
Es gibt zurück :"; Sprint 4"
. Ich verwende die Lösung, die von @PProteus angepasst wurde.TRIM(A1)
durch:TRIM(SUBSTITUTE(A1, "strDelimeter", ";"))
an allen Stellen zu ersetzen , um ein neues Zeichenbegrenzer zu erhalten:";"
oder noch besser diechar()
Funktion zum Suchen zu verwenden ein wirklich unerwarteter Charakter.TRIM
Funktion nicht, nachdem Sie die zweiteSUBSTITUTE
für die Einzelfalllösung im allgemeinen Fall hinzugefügt haben . Die Formel liefert das erwartete Ergebnis, das diesen Teil beseitigt:=SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),";",REPT(";",LEN(TRIM(A1)))),LEN(TRIM(A1))),";","")
Ich habe dies bei Google gefunden, in Excel 2003 getestet und es funktioniert für mich:
[Bearbeiten] Ich habe nicht genug Wiederholungen, um Kommentare abzugeben, daher scheint dies der beste Ort zu sein ... BradCs Antwort funktioniert auch nicht mit nachgestellten Leerzeichen oder leeren Zellen ...
[2. Bearbeiten] funktioniert tatsächlich nicht einzelne Wörter entweder ...
quelle
Dies ist sehr robust - es funktioniert für Sätze ohne Leerzeichen, führende / nachfolgende Leerzeichen, mehrere Leerzeichen, mehrere führende / nachfolgende Leerzeichen ... und ich habe char (7) für das Trennzeichen anstelle des vertikalen Balkens "|" verwendet. Nur für den Fall, dass dies ein gewünschtes Textelement ist.
quelle
Dies ist sehr sauber und kompakt und funktioniert gut.
Es gibt keine Fehlerfalle für keine Leerzeichen oder ein Wort, aber das ist einfach hinzuzufügen.
Bearbeiten:
Hiermit werden Leerzeichen, Szenarien mit einzelnen Wörtern und leere Zellen behandelt. Ich habe keinen Weg gefunden, es zu brechen.
quelle
quelle
Um die Antworten von Jerry und Joe zu ergänzen, wenn Sie den Text VOR dem letzten Wort suchen möchten, das Sie verwenden können:
Mit 'Meine kleine Katze' in A1 würde sich 'Meine kleine' ergeben (wo Joe und Jerry 'Katze' geben würden)
Auf die gleiche Weise, wie Jerry und Joe das letzte Wort isolieren, wird nur alles links davon angezeigt (und dann zurückgeschnitten).
quelle
Stellen Sie sich vor, die Zeichenfolge könnte umgekehrt werden. Dann ist es ganz einfach. Anstatt an der Zeichenfolge zu arbeiten:
du arbeitest mit
Mit
=LEFT(A1;FIND(" ";A1)-1)
in A2 erhalten Sie"My"
mit (1) und"tac"
mit (2), was umgekehrt ist"cat"
, das letzte Wort in (1).Es gibt einige VBAs, um eine Zeichenfolge umzukehren. Ich bevorzuge die öffentliche VBA-Funktion
ReverseString
.Installieren Sie das oben beschriebene wie beschrieben. Dann mit Ihrer Zeichenfolge in A1, z. B.
"My little cat"
und dieser Funktion in A2:Sie werden
"cat"
in A2 sehen.Bei der obigen Methode wird davon ausgegangen, dass Wörter durch Leerzeichen getrennt sind. Die
IF
Klausel gilt für Zellen, die einzelne Wörter enthalten = keine Leerzeichen in der Zelle. Hinweis:TRIM
undCLEAN
die Originalzeichenfolge sind ebenfalls nützlich. Im Prinzip kehrt es die gesamte Zeichenfolge von A1 um und findet einfach das erste Leerzeichen in der umgekehrten Zeichenfolge, das neben dem letzten (umgekehrten) Wort (dh"tac "
) steht.LEFT
wählt dieses Wort aus und eine andere Zeichenfolgenumkehr stellt die ursprüngliche Reihenfolge des Wortes (" cat"
) wieder her. Das-1
am Ende derFIND
Anweisung entfernte Leerzeichen.Die Idee ist , dass es einfach ist, das erste (!) Wort in einer Zeichenfolge zu extrahieren mit
LEFT
undFIND
ing den ersten Rohling. Für das letzte (!) Wort ist dieRIGHT
Funktion jedoch die falsche Wahl, wenn Sie dies versuchen, da FIND leider kein Flag für die Richtung hat, in die Sie Ihren String analysieren möchten.Daher wird die gesamte Zeichenfolge einfach umgekehrt.
LEFT
undFIND
arbeiten wie gewohnt, aber die extrahierte Zeichenfolge ist umgekehrt. Aber es ist keine große Sache, wenn Sie erst einmal wissen, wie man eine Saite umkehrt. Die ersteReverseString
Anweisung in der Formel erledigt diesen Job.quelle
quelle
In eine Spalte kopieren, diese Spalte auswählen und HOME> Bearbeiten> Suchen & Auswählen, Ersetzen:
Replace All.
Nach dem Sternchen steht ein Leerzeichen.
quelle
Ich habe nach PT-BR übersetzt, da ich das auch brauchte.
(Bitte beachten Sie, dass ich das Leerzeichen in geändert habe,
\
da ich nur den Dateinamen der Pfadzeichenfolgen benötigte.)quelle
Ein anderer Weg, um dies zu erreichen, ist wie folgt
quelle
Ich hatte auch eine Aufgabe wie diese und als ich mit der obigen Methode fertig war, kam mir eine neue Methode in den Sinn: Warum machst du das nicht:
Wie klingt das?
quelle