Teilstring einer Zelle in eine andere Zelle kopieren
#11
Hallo ihr lieben Helfer,
der Tipp von Ralf, den Bereich ":.A9999" wegzulassen brachte das gewünschte Ergebnis! Die Funktionserweiterung mit dem Punkt nach dem Doppelpunkt ist erst in einer neueren Version erschienen. Aber damit funktionieren beide Formeln von BoskoBiati einwandfrei. 

@EA1950:
Die Aussage: dass  "der Inhalt von EndeTrenn (also ".pro\") nur 1x in s vorkommt." hat mich davon abgehalten, dieses zu versuchen. Es kommt ja in jeder Zelle vor. 

Euch Allen vielen Dank. 79 
.
Beste Grüße 
von Icke
Antworten Top
#12
Hallo,

der Teilstring ".pro\" darf nur in dem jeweiligen String nur 1x vorkommen. Etwas anderes habe ich auch wirklich nicht geschrieben. Auf die Idee, dass sich dies auf alle anderen zu untersuchenden Strings auch beziehen könnte, wäre ich absolut nie gekommen.
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#13
Moin

Code:
=REGEXEXTRAHIEREN(A1;"\\([^\\]+)\.pro\\$";2)

Disclaimer: Diese Lösung wurde mit Hilfe eines Chatbots erstellt.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#14
Frag den Bot mal, warum die Formel in Excel 2021 #Name! auswirft.
21
Und lasse ihn mal das Pattern erklären …
19
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)
Antworten Top
#15
Der Bot hat zwar eine Erklärung mitgeliefert aber ich verstehe davon nur die Hälfte. Die andere Hälfte ist ein Mysterium.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#16
Hallo Icke,

mit der Funktion InStrRev() hast du schon mal die richtige Funktion gewählt, aber du kannst natürlich nicht einfach eine eigene Syntax erfinden. 

Hier ein erster Ansatz, welcher dir den Teilstring wie gewünscht in VBA extrahiert:
Code:
dim pos1 as long, pos2 as long, strTeilstring as String

pos1 = InStrRev(s,".pro\")        ' das gesuchte Ende 
pos2 = InStrRev(s,"\",len(s)-1)   ' der gesuchte Anfang
strTeilstring = mid(s,pos2+1,pos1-pos2-1) ' der extrahierte Teilstring zwischen den Positionen 

Ganz klassisch, simple Stringverarbeitung und so ganz ohne Arrays usw.  😉

Gruß Knobbi38
Antworten Top
#17
Hallo,
Zitat:=REGEXEXTRAHIEREN(A1;"\\([^\\]+)\.pro\\$";2)

Und lasse ihn mal das Pattern erklären …
Hier folgt meine Erklärung:
1) Das $-Zeichen am Ende des Pattern bedeutet, dass sich das davor liegende Muster auf das String-Ende beziehen muss.
2) Das .-Zeichen (Punkt) bedeutet, dass an dieser Zeichenposition jedes beliebige Zeichen stehen darf.
3) Das \-Zeichen ist normalerweise ein Escape-Zeichen, d.h. das folgende Zeichen hat dann nicht die erwartete Funktion - in 2-facher Hinsicht:
z.B. 3a) das w-Zeichen steht für den Buchstaben "w", dagegen \w steht für ein beliebiges Buchstaben-Zeichen (die Buchstabeneigenschaft des w wird aufgehoben).
3b) das \-Zeichen ist das besagte Escape-Zeichen, dagegen \\ steht somit für das "\"-Zeichen (die Spezialeigenschaft des \ wird damit aufgehoben).
3c) das .-Zeichen bedeutet jedes beliebige Zeichen, dagegen \. steht für das Punkt-Zeichen
4a) [abc] bedeutet, dass an dieser Zeichenposition entweder "a" oder "b" oder "c" stehen darf
4b) [^abc] dagegen bedeutet, dass an dieser Zeichenposition weder "a" noch "b" noch "c" stehen darf.
5) a+ bedeutet, dass an diesen Zeichenposition(en) mindestens 1 "a" stehen muss (also entweder "a" oder "aa" oder "aaa" …)
6) (  ) bedeutet eine Gruppe von Zeichen

7) Somit bedeutet das folgende Pattern "\\([^\\]+)\.pro\\$":
a) Wegen 1) muss sich das Pattern am String-Ende befinden und es muss aus folgenden Elementen bestehen:
b) Ein \-Zeichen (siehe Punkt 3b)),
c) gefolgt von einer Zeichengruppe (siehe Punkt 6)), in der mindestens 1 Zeichen (siehe Punkt 5)) sein muss, das/die keinesfalls aus dem \-Zeichen (siehe Punkt 3b) und Punkt 4b)) bestehen dürfen.
d) gefolgt von einem Punkt (wegen Punkt 3c)
e) gefolgt von den Zeichen "pro"
f) gefolgt von einem \-Zeichen (siehe Punkt 3b))

8) Die Funktion REGEXEXTRAHIEREN hat in diesem Fall als 3. Parameter eine 2 (=Erfassen von Gruppen der ersten Übereinstimmung):
d.h. das was unter Punkt 7c) an Zeichenfolgen gefunden wurde, wird von der Funktion als Resultat zurückgegeben.
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#18
Warum nicht  ?  UDF

Code:
Function F_snb(c00)
   F_snb=filter(split(c00,"\"),".pro")(0)
End Function
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#19
Kann man auch sehr schön hier

https://regex101.com/r/G0PPoq/1

ausprobieren.

Knobbi38
Antworten Top


Gehe zu:


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