Barry tiene una hoja de trabajo en la que una columna contiene muchas rutas de archivo. Le gustaría una forma de extraer solo el nombre del archivo (la parte a la derecha de la barra invertida final) de cada ruta. Se pregunta si hay una manera rápida de hacer esto sin usar la función Texto a columnas.

Hay varias formas diferentes, dependiendo de si desea utilizar una macro o no.

Si todos los nombres de archivo tienen la misma longitud, simplemente puede usar la función DERECHA para extraer los últimos caracteres. (Esta fórmula asume que la ruta completa y el nombre del archivo están en la celda A1.)

=RIGHT(A1,11)

Esto supone que el nombre de archivo siempre tiene 11 caracteres, como «text001.txt». Si el nombre del archivo tiene una longitud diferente en cada instancia, este enfoque no funcionará. En su lugar, puedes probar esta fórmula:

=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1), LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

Tenga en cuenta que la fórmula utiliza la función SUSTITUIR dos veces. En cada caso, reemplaza las barras invertidas (\) con algo más. La primera vez que los reemplaza todos con un valor ASCII de 1 y la segunda vez los reemplaza con nada (una cadena vacía) para que pueda determinar cuántas barras invertidas había en la ruta original. La función MID se utiliza para localizar (con la ayuda de las funciones FIND y SUSTITUTE) la ubicación de la última barra invertida en la ruta y devolver todo después de ese punto.

Se puede utilizar una fórmula más corta si está seguro de que el nombre del archivo nunca tendrá más de 99 caracteres:

=TRIM(RIGHT(SUBSTITUTE(A2,"\",REPT(" ",100)),99))

Esta fórmula reemplaza todas las barras invertidas con 100 espacios, toma los 99 caracteres más a la derecha de la cadena resultante (ese sería el nombre del archivo con un montón de espacios delante) y luego recorta todos los espacios.

Si desea utilizar una macro, puede crear una función muy corta que separará una cadena (la ruta completa, en este caso) basándose en delimitadores:

Function GetFileName(File_Path) As String     Dim Parts

Parts = Split(File_Path, Application.PathSeparator)

GetFileName = Parts(UBound(Parts))

End Function

¡Te dije que era corto! La función que hace el trabajo pesado es la función Split, que separa una cadena en función de un delimitador que especifique y coloca las partes en una matriz. En este ejemplo, la función Dividir utiliza como delimitador cualquier separador de ruta que sea apropiado para el sistema en el que se ejecuta Excel.

El último elemento de la matriz resultante (determinada con la función UBound) contiene la parte de la ruta original que está a la derecha del último separador de ruta: el nombre del archivo.

Puede desarrollar una función aún más corta para hacer el trabajo:

Function GetFileName(File_Path) As String     GetFileName=Mid(File_Path,InStrRev(File_Path,"\")+1 End Function

Para usar cualquiera de las funciones, coloque una fórmula como esta en una celda:

=GetFileName(A1)

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (12903) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Extracting_File_Names_from_a_Path [Extraer nombres de archivo de una ruta].