Ich muss den letzten Platz in einer XLS-Zelle finden

17

Ich habe eine Excel-Tabelle mit Textwerten, zB in A1: "Dies ist der Text". Ich muss die Position des letzten Leerzeichens finden. Gibt es eine Excel-Formel, die mir das gewünschte Ergebnis liefert? Ich habe FIND und SEARCH ausprobiert, aber diese beginnen von links. Ich muss von rechts beginnen.

Dheer
quelle

Antworten:

28

Wenn Sie mit Leerwert "Leerzeichen" und mit XLS Excel meinen, können Sie diese Formel verwenden (vorausgesetzt, der Test, in dem Sie das letzte Leerzeichen finden möchten, befindet sich in A1):

=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

Sie können es in 3 Teile teilen:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))gibt Ihnen die Anzahl der Leerzeichen, nennen wir es x,
  • SUBSTITUTE(A1," ","☃",[x])wird das xdritte Feld (also das letzte) durch einen Schneemann ersetzen ,
  • FIND("☃",[...])gibt Ihnen die Position des Schneemanns. Welches ist die Position des letzten Feldes.
m4573r
quelle
Funktioniert perfekt. Vielen Dank. Ich habe eine Weile gebraucht, um herauszufinden, warum es trotz Ihrer Erklärung
funktioniert hat
5
+1 für eine nette, detaillierte Antwort und den bisher kreativsten Ersatzcharakter.
Doug Glancy
8

Hier ist eine andere Möglichkeit, alle Charaktere sind in A1 erlaubt (sogar Schneemänner!)

=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))

FIND hat ein drittes Argument, das die Startposition der Suche definiert. Wenn Sie ein Array mit ganzzahligen Werten 1 bis n (wobei n die Länge von A1 ist) auf diesen Parameter anwenden, erhalten Sie ein Array zurück, wobei die letzte Zahl die Position von ist letzter Raum.

LOOKUPExtrahiert dann diese Zahl, indem nach einem Wert gesucht wird, der größer ist als jeder Wert, der in diesem Array gefunden werden kann. In diesem Fall wird die letzte Zahl gefunden

In Excel 2010oder später können Sie auch eine solche AGGREGATEFunktion verwenden

=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)

FINDGibt das gleiche Array wie zuvor zurück. Wenn Sie 14 als erstes Argument von AGGREGATEund 1 als letztes verwenden, erhalten Sie den größten Wert im Array, während Sie Fehler ignorieren. [6]

Barry Houdini
quelle
1
funktioniert super. Obwohl ich vor einiger Zeit Entwickler war, kann ich immer noch nicht herausfinden, wie und warum INDIRECT funktioniert :)
Dheer
1
Angenommen, A1 hat 12 Zeichen, dann "1:"&LEN(A1)ergibt dieser Teil "1:12" - das ist eine Zeichenfolge, die ROW nicht verarbeiten kann, aber INDIRECT konvertiert eine Zeichenfolge in eine gültige Referenz, die ROW verarbeiten kann , sodass ROW (1:12) dann {1 ergibt ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
Barry Houdini
Danke für die Klarstellung. Macht jetzt Sinn. Das heißt, Find selbst arbeitet implizit mit dem Array und wird für jeden Wert als Startposition ausgeführt ...
Dheer
Das ist richtig, FIND gibt ein Array zurück, z. B. wenn A1 enthält, gibt barry larry houdiniFIND dieses Array zurück {6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}und LOOKUP und / oder AGGREGATE nehmen den letzten / größten numerischen Wert daraus, dh 12
barry houdini