Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Letztes Wort aus String filtern

Letztes Wort aus String filtern
10.08.2020 14:43:44
BuStue
Hallo Freunde,
ich habe schon mehrere Tage gesucht kann aber keine richtig Lösung finden. In einer Zelle steht am Ende des String mit unterschiedlichem Abstand zum letzten Leerzeichen von rechts der Hersteller. Wie kann ich das mit einer Formel lösen, das ich den Hersteller, der auch unterschiedliche Buchstabenlänge haben kann herausfiltern. Beispiel:
UWK-Select

 HIABAC
13374Ersatz-Absetzsägeblatt 600mm                 ECE  38031        ECE  
13375Ersatz-Absetzsägeblatt 700mm                 ECE  38031        ECE  
13376Schittersäge 700mm                 ECE  38021E  
13377Ersatz-Schittersägeblatt 700mm                 ECE  38031          ECE  
16055Klüpfel 140mm                 ECE  25121#WERT!
16057Tischlerschmiege 250mm                 ECE  37381  ECE  
16058Tischlerschmiege 300mm                 ECE  37381  ECE  
16059Tischlerwinkel Nr. 403 150mm                 ECE  37381ECE  
16060Tischlerwinkel Nr. 403 250mm                 ECE  37381ECE  
16061Tischlerwinkel Nr. 403 300mm                 ECE  37381ECE  

Formeln der Tabelle
ZelleFormel
H13374=D13374&" "&E13374&" "&F13374&" "&G13374
AC13374=RECHTS(H13374;FINDEN(" ";H13374)-10)
H13375=D13375&" "&E13375&" "&F13375&" "&G13375
AC13375=RECHTS(H13375;FINDEN(" ";H13375)-10)
H13376=D13376&" "&E13376&" "&F13376&" "&G13376
AC13376=RECHTS(H13376;FINDEN(" ";H13376)-10)
H13377=D13377&" "&E13377&" "&F13377&" "&G13377
AC13377=RECHTS(H13377;FINDEN(" ";H13377)-10)
H16055=D16055&" "&E16055&" "&F16055&" "&G16055
AC16055=RECHTS(H16055;FINDEN(" ";H16055)-10)
H16057=D16057&" "&E16057&" "&F16057&" "&G16057
AC16057=RECHTS(H16057;FINDEN(" ";H16057)-10)
H16058=D16058&" "&E16058&" "&F16058&" "&G16058
AC16058=RECHTS(H16058;FINDEN(" ";H16058)-10)
H16059=D16059&" "&E16059&" "&F16059&" "&G16059
AC16059=RECHTS(H16059;FINDEN(" ";H16059)-10)
H16060=D16060&" "&E16060&" "&F16060&" "&G16060
AC16060=RECHTS(H16060;FINDEN(" ";H16060)-10)
H16061=D16061&" "&E16061&" "&F16061&" "&G16061
AC16061=RECHTS(H16061;FINDEN(" ";H16061)-10)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Ich hoffe jemand kann helfen, denn Die Tabelle hat über 17000 Datensätze.
MfG Burghard

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letztes Wort aus String filtern
10.08.2020 15:04:59
thisisholy
Hallo Burghard,
mit der folgenden Formel hat es bei deinen Beispielen funktioniert.
=RECHTS(WECHSELN(H13374;" ";"");4)
AW: Letztes Wort aus String filtern
10.08.2020 15:14:35
BuStue
Hallo thisisholy,
recht vielen Dank für Deine schnelle Antwort. Habe ich auch bereits ausprobiert und funktioniert auch. Wenn jedoch der Herstellername mehr als 3 Buchstaben besitzt, funktioniert es dann nicht mehr.
Beispiel: statt EDE , Zinner = nner
MfG
Burghard
AW: wenn im Suchnamen kein weiteres " " steht ...
10.08.2020 15:10:58
neopa
Hallo Burghard,
... dann z.B. so:
=TEIL(GLÄTTEN(A1);VERWEIS(9;1/(TEIL(GLÄTTEN(A1);ZEILE(A$1:A$999);1)=" ");ZEILE(A:A))+1;99)
Gruß Werner
.. , - ...
AW: wenn im Suchnamen kein weiteres " " steht ...
10.08.2020 15:18:49
BuStue
Hallo neopa C,
auch Dir recht vielen Dank für Deine schnelle Antwort. Deine Lösung mit dem Glätten bringt es.
So hatte ich mir das vorgestellt.
MfG
Burghard
Anzeige
AW: Letztes Wort aus String filtern
10.08.2020 15:14:20
peterk
Hallo
=GLÄTTEN(RECHTS(WECHSELN(GLÄTTEN(H2);" ";WIEDERHOLEN(" ";99));99))
AW: Letztes Wort aus String filtern
10.08.2020 15:21:33
BuStue
Hallo peterk,
ebenfalls danke ich auch Dir für Deine schnelle Antwort. Auch Deine Lösung ist perfekt.
Recht vielen Dank.
MfG
Burghard
AW: ja, der Ansatz von lupo ist einfacher owT
10.08.2020 15:23:08
lupo
Gruß Werner
.. , - ...
Zugabe - per UDF
10.08.2020 18:25:11
Luc:?
Deine Texte sind sehr roh, Burghard,
geradezu unmöglich, normale mit zusätzlichen geschützten Leerzeichen kombiniert! Das muss also auch noch in der Fml berücksichtigt wdn. Aber dann kann eine auch genau solche Fälle (letztes Wort) berücksichtigende UDF benutzt wdn. Die universelle Fml lautet dann so:
AC13374[ff]:=Splint(GLÄTTEN(WECHSELN(H13374;ZEICHEN(160);""));;1;1;1)
(Link zur UDF in der Fml!)
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
Wie wäre es noch mit...
11.08.2020 07:43:10
Case
Moin Luc:?, :-)
... "RegExp"? ;-)
Option Explicit
Public Function fncLeer(ByVal rngCell As Range) As Variant
Dim objMatch As Object
Dim obRegEx As Object
On Error GoTo Fin
Set obRegEx = CreateObject("VbScript.RegExp")
With obRegEx
.Pattern = "\ {2,}\w+"
.Global = True
Set objMatch = .Execute(rngCell.Text)
End With
If objMatch.Count >= 1 Then fncLeer = Trim(objMatch(objMatch.Count - 1).Value)
Fin:
If Err.Number  0 Or objMatch.Count 
Dann:

=fncLeer(A1)
Servus
Case

Anzeige
"Falsche Vorgabe!"
12.08.2020 02:32:31
Luc:?
Kann es sein, Case,
dass Du selbst diese Meldung im konkreten Fall durch eine falsche RegEx-Vorgabe provoziert hast?
Ich kann da Verbesserungen des Ausgangstextes in die Fml einbauen u/o die UDF von ihrer unnötigen Range-Einschränkung befreien — es nützt nichts! Ohnehin ist sie in ihrer Starrheit und FallBezogenheit keine echte Alternative. Gerade so etwas versuche ich zu vermeiden!
Was RegEx betrifft, müsste ein Nutzer das dann wohl beherrschen oder man müsste auf das Handbuch dazu verweisen bzw es ihm mitgeben! So toll das also ist, so wenig passt es zur gängigen Xl-Fml-Praxis. Es ist folglich ein reines Pgmmierer-Tool! Und auf ein derartiges „Nur-Pgmmierer-Denken“ weisen auch für den Nutzer sichtbare Fkts- und ArgumentNamen hin. Hast Du bei irgendeiner Xl-Fkt schonmal das Präfix fnc~ oder bei den ArgumenteNamen rng~ gesehen‽ Das ist doch eine reine VBA-Pgmmierer-Marotte, die intern bleiben sollte, weil EndNutzer damit garantiert nichts anfangen können. Zumal bezieht sich das auch noch auf eine falsch verstandene UN/HN*! VBA bringt da von Hause aus schon Sinnvolleres mit.
* Das ist beinahe wie mit dem Unterschied von Hinayana- und Mahayana-Buddhismus. Das „große (maha) Schiff“ ist nicht unbedingt das richtigere oder sicherere, nur weil darauf mehr Leute mitfahren, mitunter ist es gerade das kleinere, das Ursprünglichkeit garantiert.
Zurück zum Thema:
Meine Split-Variante zerlegt den Text in EinzelTeile lt Arg3/4. Arg5 bewirkt dann ggf den Ersatz des letzten Teils lt Arg4 durch den real allerletzten Teil. So können auch Texte auf Anfang und Ende verkürzt wdn, wenn man diese Teile dann wieder zusammenfasst, zB mit UDF VJoin.
Dagg fktioniert auch meine, im Prinzip der Deinen ähnliche Variante für die Bspp gut:
=GLÄTTEN(TEIL(H13374; VLike(H13374; "* [A-ZẞÄÖÜa-zßäöü]*";-1);99))
Genauso sieht's auch bei einer weiteren, split-freien Fml-Variante aus:
=MaskOn(PickOn(H13374;-1;" "&ZEICHEN(160));"bst")
Morhn, Luc :-?
Anzeige
Interpretierte Vorgabe!
12.08.2020 09:40:03
Case
Moin Luc:?, :-)
der TE schrieb: "In einer Zelle steht am Ende des String mit unterschiedlichem Abstand zum letzten Leerzeichen von rechts der Hersteller."
Nun nehmen wir mal aus seinem Beispiel die Zeile "13376". Würde dort kein Hersteller stehen (reine Interpretation von mir), dann würde selbiger in dem Fall "700mm" heißen. Halte ich für unwahrscheinlich. Deshalb der Pattern und die entsprechende Reaktion. Steht in den Zeilen immer ein Hersteller mit entsprechendem Abstand, merkt man davon ja auch nichts. ;-)
Das fängt nun nicht alles ab, aber der Vorteil, - finde ich - man muss nur am Pattern drehen.
Natürlich kann ich Split und Ubound nehmen. Aber das ist mir in der Stringmanipulation zu starr. Mit RegExp kann ich testen, austauschen, auslesen. Alles mit einer UDF. Man muss nur das Pattern ändern und über Optionale Parameter die Ausgabe steuern. Dann ist es auch nur eine UDF für viele Aufgaben. ;-)
Meine universelle UDF möchte ich nicht zur Verfügung stellen. Da steckt einfach zuviel Arbeit drin bzw. die ist auch nicht ausreichend dokumentiert. Über die Jahre stellt man doch fest, dass die Fragen der Forenteilnehmer immer ähnlich sind. Über vorgefertigte Pattern und Optionale Parameter kann man da fast alles erschlagen.
Aber du siehst das ja auch an den Reaktionen auf deine UDFs: "Das ist zu hoch für mich", oder "Da blicke ich nicht durch" und dergleichen Aussagen - oder gar keine Reaktion. Dass hinter z. B. der AGGREGAT-Funktion auch ein Algorithmus steckt ist dem Fragenden und dem Antworter in der Regel egal. Hauptsache es funktioniert.
Bei Stringmanipulationen werde ich grundsätzlich RegExp nutzen. Skepsis macht sich immer dann bei mir breit, wenn jemand etwas schlecht redet bzw. argumentiert ohne das Werkzeug ausreichend zu kennen bzw. zu beherrschen. Das hat immer einen faden Beigeschmack.
Aber ich möchte hier keine endlose Diskussion lostreten. Es war mein Fehler. Ich hätte es im Themenbaum an den TE anhängen sollen und er, oder andere die es mal im Archiv lesen, entscheiden dann einfach was sie nehmen. Fertig.
Servus
Case

Anzeige
Deine AW sagt mir, dass Du das nicht ...
13.08.2020 02:38:40
Luc:?
…mit den Bspp getestet hast, Case;
da das an mich gerichtet war, ging ich von einer fktionablen Alternative aus. Und Deine jetzige AW zeigt erneut, dass Du konkret wie ein Pgmmierer denkst, nicht wie ein ProjektEntwickler, der viele Situationen und Verhaltensweisen berücksichtigen muss. Natürlich wäre es schön, wenn der vbOperator Like noch etwas mehr könnte (seine Pattern-Symbole), ohne dass man gleich ein Handbuch benötigt. Und eine Fkt, die man intern an die jeweiligen Erfordernisse anpassen* muss, ist allenfalls eine PgmmierHilfsfkt, keine UDF für den ZellFml-Einsatz, denn das kann man mit XL-Fktt auch nicht machen. Aber die kann man in Fmln (mitunter) so geschickt kombinieren, dass sie Dinge berechnen, die man erst nicht vermuten würde, auch ganz im Ggsatz zu VBA-Analogien und mitunter anderer Calc-Software. Unsere Fml-Freaks haben sich hierbei große Verdienste erworben, ohne damit schon alles entdeckt zu haben. Mit entsprd PgmmierKenntnissen° kann man da gelegentlich noch mehr herausholen.
* Die oben verlinkte VLike-Version verwendet zwar eine intern zu ändernde Kompilierungskonstante, aber die muss nur einmal geändert wdn, wenn man über die intern verwendete UDF verfügt.
° Dazu demnächst erneut mehr (Stichworte: INDEX und TensorProdukt).

Tja, und meine UDFs sind nicht für Nachbearbeitungen und Anpassungen gedacht, sondern sollen als eine Erweiterung von Xls Fktsinventar gesehen und benutzt wdn. Wer sie verstehen will, kann das gerne tun, aber er muss es nicht. Bei xlFktt kann er's ja auch nicht nachvollziehen. (Übrigens habe ich auch UDFs mit mehreren 100 Zeilen Länge, mitunter auch mehrteilig mit weit über 1000. So etwas würde ich hier auch nicht nachvollziehen wollen. ;-])
Morhn, Luc :-?
Anzeige
Erwischt...
13.08.2020 10:38:31
Case
... da ich tatsächlich Projekte entwickle. Ich werde umgehend zu meiner Obrigkeit pilgern und ihnen mit Nachdruck versichern, dass ich nicht wie ein Projektentwickler denken kann - wenn nötig werde ich das an Hand des Forums schriftlich belegen können. Da mir das von einem kompetenten Forenmitglied versichert wurde, werde ich eiligst meine sofortige Versetzung in den vorgezogenen Ruhestand (ist nicht viel) ins Spiel bringen.
Aber dann habe ich ja Zeit... was mache ich dann... mich mit RegExp weiter und intensiver auseinander setzen? Wandern? Meinen dritten Frühling genießen? Ich könnte auch in Foren stänkern? Ach - ich kann mich nicht entscheiden. Und meine Obrigkeit sagt bis jetzt - NEIN. Vielleicht - natürlich nur vielleicht - erledige ich meine Aufgaben doch nicht so schlecht. ;-)
Und doch - ich habe eine Beispieldatei erstellt. Na ja, wenn der TE etwas anderes möchte, wird er sich sicher nochmals melden, denn - es geht doch um die TE und ihre Fragen, oder nicht?
Ich steige hier aus. Alles gute noch...
Servus
Case

Anzeige
Na, nu ärja Dia ma nich, ...
14.08.2020 03:06:00
Luc:?
…Case,
am Anfang meiner PgmmierTätigkeit nebst eigenständiger ProjektEntwicklung war gerade Niels Klims unterirdische Reise von Ludvig Holberg (Nicolai Klimii Iter Subterraneum, 1741) von Reclam als Reprint herausgebracht wdn. Wir hatten uns daraufhin damals immer damit gefrozzelt, dass in einer der von ihm besuchten unterirdischen Welten ProjekteMacher sofort hingerichtet wurden.
Ein ProjektEntwickler im landläufigen Sinne wird sich natürlich nach festen Vorgaben richten können und müssen. Darum ging's mir bei meiner Bemerkung aber nicht, weil eine UDF für ZellFml-Einsatz idealerweise all das berücksichtigen muss, was Xl-Fktt (aufgabenbezogen) auch berücksichtigen müssen — die vielgestaltige Xl-Umgebung. Und wer als Anwendungspgmmierer homogene Projekte pgmmiert und ggf auch konzipiert, die der EndAnwender en detail ja nicht zu Gesicht bekommt (nur ihre Ergebnisse), kann ja nach einem ggf vereinbarten Schema (speziell Namen u.ä.) arbeiten. Fktt kommen darin sicher nur als Hilfsfktt vor.
Ich habe mich ab 1974 auf Neuland begeben müssen und ein Metadaten-Projekt (mit-)konzipiert, das Jahre später und nach heftigen Widerständen in der MetadatenBasis einer relationalen DB aufging bzw gehen sollte. So etwas war auch ein Projekt der UNECE, an dem viele Länder mitarbeiteten. Österreich hatte mit ISIS angefangen, wir mit SIR und letztlich hieß es METIS (internationale Konferenzen, leider ohne uns).
Und wer von den VBA-Anwendungspgmmierern hat schon Lust, Zeit und Muße, in den Fktskern von Xl eindringen zu wollen, zumal man sich dessen Fktsweise ja nur indirekt erschließen kann‽ Deshalb zefallen die Xl-Enthusiasten ja auch in 2 Lager* → auf der einen Seite die Pgmmierer, die das tun, was sie immer tun, und auf der anderen die Fml-Cracks. Dazwischen ist kaum etwas, obwohl ja bekanntlich gerade die „Grenzgänger“ (nicht nur der Wissenschaft) oft den größten Nutzen bringen, denn hier ist mitunter noch so manches zu entdecken.
Deshalb ist die Entwicklung von UDFs für mich idR mit systemischem Denken verbunden, auch, wenn ich das nicht immer so umsetze (bzw in der Vergangenheit so umgesetzt hatte → LernProzess!).
Und übrigens, das, was Dir in wenigen Jahren bevorsteht, habe ich bereits seit 10… ;-)
* Denen die große Masse der „normalen“ Xl-Anwender ggübersteht.
Morhn, Luc :-?
Anzeige

166 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige