Fórmula de Excel, eliminar la última \ y la ruta secundaria de la cadena

Fórmula de Excel, eliminar la última \ y la ruta secundaria de la cadena

Tengo un nombre de ruta que utiliza barras invertidas como delimitadores y termina con una barra invertida en la celda B5, por ejemplo  \\stack\over\flow\,. Me gustaría reducirlo a \\stack\over\. Necesito una fórmula para eliminar el último \componente de la ruta secundaria de mi ruta completa.

Respuesta1

En C5, ingrese la fórmula:

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

Respuesta2

Sobre la base deLa respuesta de bosco_yip, simplificándolo y explicándolo:

=LEFT(B5,FIND("|",SUBSTITUTE(B5,"\","|",LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))-1)))
  • SUBSTITUTE(B5,"\","")elimina todas las barras invertidas B5 (reemplazándolas con cadenas vacías). Entonces, por ejemplo, si B5es \\stack\over\flow\, esto sería stackoverflow.
  • LEN(B5)-LEN(SUBSTITUTE(B5,"\",""))es un truco común para contar el número de barras invertidas en  B5. Restamos 1 de eso para obtener el número de la penúltima barra invertida.
  • SUBSTITUTE(B5,"\","|", <the above> ) reemplaza la penúltima barra invertida con una  |(barra vertical).
  • FIND("|", <the above> ) encuentra elposicióndel |, que (presumiblemente/con suerte) fue la penúltima barra invertida. Naturalmente, habrá un problema aquí si B5ya contiene barras verticales, pero tenga en cuenta que eso |no está permitido en las rutas de acceso de Windows. (Por el contrario,@ esun carácter de nombre de archivo de Windows válido).
  • LEFT(B5, <the above> )obtiene el valor de B5 hasta (e incluyendo) la penúltima barra invertida.

Tenga en cuenta que, si  B5contiene solo uno  \ (por ejemplo  \, foo\bar\Program Files), lo anterior generará un error. Si  B5es  \\\\stack, entonces el resultado será  \.  La respuesta de bosco_yipse comporta igual.

información relacionada