Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

mehrere strings zwischen 2 Variablen herauslesen
#1
Hi Excel Heros!

Hätte da eine Frage! Ich möchte aus einem String alle Variablen herauslesen, die zwischen % liegen inkl. den % Anzeigen.

Also wenn in der Zelle D3 "Robschi %kennt% sich in %Excel% nicht aus."

Dann soll Ausgegeben werden:  %kennt% %Excel%

Mit 
=TEIL(D3;SUCHEN("%";D3);SUCHEN("%";D3;SUCHEN("%";D3)+1)-SUCHEN("%";D3)+1)
bekomme ich nur den ersten Teil heraus.

Wie mach ich da weiter?
Danke, L.G. Robschi
Antwortento top
#2
Hallo,

wenn Du ein modernes Excel hast, was dynamische Arrays kann und somit die Funktionen EINDEUTIG und SEQUENZ kennt,
kannst Du es wie folgt lösen ...


Code:
A1=Heute ist ein %Variable 1% Tag und %Variable 2% machen %Variable 3%.

B1=1
C1=WENNFEHLER(TEIL($A$1;INDEX(EINDEUTIG(WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B1-1);
   INDEX(EINDEUTIG(WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B1)-INDEX(EINDEUTIG(
   WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B1-1)+1);"-")

B2=B1+1
C2=WENNFEHLER(TEIL($A$1;INDEX(EINDEUTIG(WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B2-1);
   INDEX(EINDEUTIG(WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B2)-INDEX(EINDEUTIG(
   WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B2-1)+1);"-")

:


Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Antwortento top
#3
Hallo, 19

habe die Formeln von "maninweb" in eine Beispieldatei gepackt. Wenn du da Fehler bekommst, habe ich noch zwei Alternativen drin: 21

.xlsb   REGEXP_Prozent_plus_Text_plus_Prozent_extrahieren.xlsb (Größe: 21,29 KB / Downloads: 6)
________
Servus
Case
Antwortento top
#4
Off topic:

Hallo Mourad!

Zitat:… wenn Du ein modernes Excel hast, was […] SEQUENZ kennt,


Ich habe die Funktion bisher noch nicht benutzt, sehe aber gerade die gewaltigen Möglichkeiten, die auf Basis von Zählvariablen entstehen.
(Fast) jeder kennt ja die Matrixversion zur Ermittlung der Quersumme einer Zahl mit unbekannter Stellenanzahl:
{=SUMME(1*TEIL(A2;ZEILE(INDIREKT("1:"&LÄNGE(A2)));1))}

Geht ja nun viel einfacher:
=SUMME(1*TEIL(A2;SEQUENZ(LÄNGE(A2));1))

ABC
1ZahlQsneuQsalt
2123451515
312341010
412366

ZelleFormel
B2=SUMME(--TEIL(A2;SEQUENZ(LÄNGE(A2));1))
C2{=SUMME(1*TEIL(A2;ZEILE(INDIREKT("1:"&LÄNGE(A2)));1))}
Achtung, Matrixformel enthalten!
Die geschweiften Klammern{} werden nicht eingegeben.
Verlassen Sie den Zelleneditor mit Strg+Shift + Enter, statt Enter alleine.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antwortento top
#5
Off-Topic als Antwort an Ralf.
----------------------------------------------------
Hallo Ralf,

jep, die neuen Funktionen sind schon cool. Hier eine Möglichkeit/Idee, einen Text nach Trennzeichen aufzuteilen.


Code:
A1=K01234-Z567-A3456-Information
B1=EINDEUTIG(WENNFEHLER(FINDEN("-";"-"&$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)+2))
C1=WENNFEHLER(TEIL($A$1;B1#;INDEX(B1#;2):INDEX(B1#;ZEILEN(B1#))-B1#-1);"")

Noch ist's mir nicht gelungen, das dynamische Ausgabe-Array um eine Zeile zu reduzieren.
Vielleicht hat ja jemand eine Idee dazu.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Antwortento top
#6
=WECHSELN("%"&TEXTVERKETTEN("% %";;WENN(ISTFEHLER(SUCHEN("#";
GLÄTTEN(TEIL(WECHSELN(WECHSELN($A1;" ";"#");"%";WIEDERHOLEN(" ";299));SPALTE(A1:Z1)*299-298;299))));
GLÄTTEN(TEIL(WECHSELN(WECHSELN($A1;" ";"#");"%";WIEDERHOLEN(" ";299));SPALTE(A1:Z1)*299-298;299));""))&"%";"%%";)
Antwortento top
#7
Hi, 
Wenn bei deiner Formel ein zeichen hinter dem %Zeichen steht, dann wird dieses auch angezeigt:
Lunch today @13:00h %name%?   --> %name% %?%
wie bekomme ich das noch weg?
DANKE 
Robschi
Antwortento top
#8
Danke. 
Die Lösung: =WENNFEHLER(TEIL($A$1;INDEX(EINDEUTIG(WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B1-1);
  INDEX(EINDEUTIG(WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B1)-INDEX(EINDEUTIG(
  WENNFEHLER(FINDEN("%";$A$1;SEQUENZ(LÄNGE($A$1)));LÄNGE($A$1)));2*B1-1)+1);"-")


ist genial für meine Anwendung!

Eine Frage noch dazu: ich bräuchte wirklich nur die Ausgaben die ohne Leerzeichen zwischen % stehen.
Wenn im text beispielweise 
To get 20% off your next oil change; send %code% to %name%.
steht, dann sollte 
bei B1= 1 %code% und bei B1=2 %name%
ausgegeben werden.

Kannst du mir da auch noch helfen.
Liebe Grüße
Robschi
Antwortento top
#9
Hallo,

das ist komplizierter, weshalb ich da eher eine Hilfsspalte verwenden würde. Nur rudimentär getestet ...


Code:
A1=To get 20% off your next oil change; send %code% to %name%.

B1=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(
   WECHSELN($A$1;".";" ");",";" ");";";" ");"-";" ");"<";" ");">";" ");"%%";"% %");" %";"<");"% ";">")

C1=1
D1=WENNFEHLER(INDEX(WECHSELN(LINKS(TEIL($B$1;EINDEUTIG(WENNFEHLER(SUCHEN("<"&"*"&">";$B$1;
   SEQUENZ(LÄNGE($B$1)));LÄNGE($B$1)));99);FINDEN(">";TEIL($B$1;EINDEUTIG(WENNFEHLER(
   SUCHEN("<"&"*"&">";$B$1;SEQUENZ(LÄNGE($B$1)));LÄNGE($B$1)));99))-1);"<";"%")&"%";C1;1);"-")


C2=C1+1
D2=D1 AutoAusfüllen


Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2021
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Antwortento top
#10
DANKE Nochmal! Ich habs jetzt mit der VBA Funktion gelöst,... das ist am effizientesten!
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste