Teilstring einer Zelle in eine andere Zelle kopieren
#1
Hallo zusammen,
ich habe ein Problem und komme nicht weiter:
in einer langen Liste (nur Spalte A ist gefüllt) habe ich Werte die z.B. mit ".pro\" enden. Nun möchte ich vom Punkt ab nach links bis zum nächsten \ den Text auslesen und in Spalte B einfügen. 

Mein Code bisher:

Dim Text As String

    If Tabelle1.Range("A1") <> "" Then
        Text = InStrRev("A1", ".pro", 20)
        Debug.Print Range("A1")
        Debug.Print Text
       
   
    'Text = Range.Offset(0, 1).Value
    'MsgBox = Text
    'offset(1,0)
   
    End If

Der debug.print Befehl ist nur zur Kontrolle, ob ich richtig liege (was ja leider nicht der Fall ist) Sad

Kann mir bitte jemand weiter helfen?
.
Beste Grüße 
von Icke
Antworten Top
#2
Hi,


Zitat:mit ".pro\" enden

und dann suchst Du nach


Zitat:InStrRev("A1", ".pro", 20)

Wieviele \ sind in Deinen Texten? Wie wäre es mit ein paar Mustertexten und den Wunschergebnissen? Kennt Deine Version TEXTVOR und TEXTNACH?
wenn ja, dann so in B1:

Code:
=TEXTNACH(TEXTVOR(A:.A;".pro";-1);"\";-1)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Hallo,

folgende VBA-Funktion in ein allgemeines Codemodul speichern:
Code:
Public Function TextAnfgEnde(s As String, DavorTrenn As String, EndeTrenn As String) As String
  
   Dim txtE() As String, txtA() As String
  
   txtE = Split(s, EndeTrenn)
   txtA = Split(txtE(0), DavorTrenn)
   TextAnfgEnde = txtA(UBound(txtA))
  
End Function
Steht zB. in Zelle A1 folgender Text: alle\meine\texte-aufgaben.pro\blabla
und in Zelle B1 die Formel: =TextAnfgEnde(A1;"\";".pro\")
ergibt sich in Zelle B1 als Resultat: texte-aufgaben
Wichtig ist, dass der Inhalt von EndeTrenn (also ".pro\") nur 1x in s vorkommt.
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#4
Hallo BoskoBiati,

danke für deinen Hinweis. Die Anzahl der "\" ist unterschiedlich und die Textvor und Textnach-Funktion habe ich nicht (Version 2021). 

Als Beispiel habe ich ein Bild angehangen: in Spalte "B" soll das Ende der Spalte "A", also der Text zwischen dem vorletzten \ und ".pro\". 

Kannst du damit etwas anfangen?


Angehängte Dateien Thumbnail(s)
   
.
Beste Grüße 
von Icke
Antworten Top
#5
Hi,

neuer Versuch:

Code:
=LET(xa;LINKS(A1:.A9999;SUCHEN(".pro";A1:.A9999)-1);xb;LÄNGE(xa);xc;LÄNGE(WECHSELN(xa;"\";""));TEIL(xa;SUCHEN("#";WECHSELN(xa;"\";"#";xb-xc))+1;99))
=TEIL(LINKS(A1:.A9999;SUCHEN(".pro";A1:.A9999)-1);SUCHEN("#";WECHSELN(LINKS(A1:.A9999;SUCHEN(".pro";A1:.A9999)-1);"\";"#";LÄNGE(LINKS(A1:.A9999;SUCHEN(".pro";A1:.A9999)-1))-LÄNGE(WECHSELN(LINKS(A1:.A9999;SUCHEN(".pro";A1:.A9999)-1);"\";""))))+1;99)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#6
Hallo nochmals,
ich dachte, ich kenne mich schon recht gut in Excel aus. Aber deine Formel kann ich nicht nachvollziehen. 
Und leider: beide funktionieren nicht. Hat das mit der Version zu tun? Aber danke für deinen Hilfeversuch.
.
Beste Grüße 
von Icke
Antworten Top
#7
moin,

ich teste ja gerne etwas mit
und Antons Funktion trennt deine Beispieltexte wie gewünscht
hast du es denn mal ausprobiert?

mfg Tom
Antworten Top
#8
Auch Moin!
Excel 2021 dürfte den Bereichsoperator :. nicht kennen.
Lasse mal :.A9999 weg:
Code:
=LET(xa;LINKS(A1;SUCHEN(".pro";A1)-1);xb;LÄNGE(xa);xc;LÄNGE(WECHSELN(xa;"\";""));TEIL(xa;SUCHEN("#";WECHSELN(xa;"\";"#";xb-xc))+1;99))
AB
1alle\meine\texte-aufgaben.pro\blablatexte-aufgaben

ZelleFormel
B1=LET(xa;LINKS(A1;SUCHEN(".pro";A1)-1);xb;LÄNGE(xa);xc;LÄNGE(WECHSELN(xa;"\";""));TEIL(xa;SUCHEN("#";WECHSELN(xa;"\";"#";xb-xc))+1;99))

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)
Antworten Top
#9
Hallo Excel_Quähler,

hast du meine VBA-Funktion aus Posting #3 schon ausprobiert? Diese müsste ja doch funktionieren - oder ?
Gruß Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#10
Hallo,

leider kann ich meine Formeln nicht in 2021 ausprobieren. Wenn die  Version spillen kann, dann ginge es so:

Code:
=WENN(A1:A99="";"";TEIL(LINKS(A1:A99;SUCHEN(".pro";A1:A99)-1);SUCHEN("#";WECHSELN(LINKS(A1:A99;SUCHEN(".pro";A1:A99)-1);"\";"#";LÄNGE(LINKS(A1:A99;SUCHEN(".pro";A1:A99)-1))-LÄNGE(WECHSELN(LINKS(A1:A99;SUCHEN(".pro";A1:A99)-1);"\";""))))+1;99))
=WENN(A1:A99="";"";LET(xa;LINKS(A1:A99;SUCHEN(".pro";A1:A99)-1);xb;LÄNGE(xa);xc;LÄNGE(WECHSELN(xa;"\";""));TEIL(xa;SUCHEN("#";WECHSELN(xa;"\";"#";xb-xc))+1;99)))
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


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