Excel-Formel: Letzten \ und untergeordneten Pfad aus Zeichenfolge entfernen

Excel-Formel: Letzten \ und untergeordneten Pfad aus Zeichenfolge entfernen

Ich habe einen Pfadnamen, der Backslashs als Trennzeichen verwendet und in der Zelle mit einem Backslash endet B5, z. B.  \\stack\over\flow\. Ich möchte ihn auf reduzieren \\stack\over\. Ich brauche eine Formel, um die letzte \und untergeordnete Pfadkomponente aus meinem vollständigen Pfad zu entfernen.

Antwort1

Geben Sie in C5 die Formel ein:

=REPLACE(B5,FIND("@",SUBSTITUTE(B5,"\","@",LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))-1))+1,99,"")

Antwort2

Aufbauend aufbosco_yips Antwort, vereinfacht und erklärt:

=LEFT(B5,FIND("|",SUBSTITUTE(B5,"\","|",LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))-1)))
  • SUBSTITUTE(B5,"\","")entfernt alle Backslashes in B5 (indem sie durch leere Zeichenfolgen ersetzt werden). Wenn also beispielsweise B5ist \\stack\over\flow\, wäre dies stackoverflow.
  • LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))ist ein gängiger Trick zum Zählen der Anzahl der Backslashs in  B5. Wir ziehen davon 1 ab, um die Nummer des vorletzten Backslashs zu erhalten.
  • SUBSTITUTE(B5,"\","|", <the above> ) ersetzt den vorletzten Backslash durch einen  |(senkrechten Strich).
  • FIND("|", <the above> ) findet diePositiondes |, der (vermutlich / hoffentlich) der vorletzte Backslash war. Natürlich gibt es hier ein Problem, wenn B5bereits vertikale Striche enthalten sind, aber beachten Sie, dass dies |in Windows-Pfadnamen nicht zulässig ist. (Im Gegensatz dazu@ Istein gültiges Windows-Dateinamenzeichen.)
  • LEFT(B5, <the above> )erhält den Wert B5 bis einschließlich des vorletzten Backslashs.

Beachten Sie, dass ein Fehler auftritt  , wenn  B5nur eines enthalten ist  \ (z. B.  \, foo\baroder  ). Wenn oder  enthalten ist  , ist das Ergebnis  .  \Program FilesB5\\\\stack\bosco_yips Antwortverhält sich gleich.

verwandte Informationen