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 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 que retroceda en la ruta hasta que localice la última barra invertida. Luego devuelve todo después de la barra invertida. El siguiente ejemplo comienza en la celda B1, examina todo a la derecha de la celda (celda A1) y luego comienza a extraer los nombres de los archivos. Recorre todas las celdas de la columna A y coloca el nombre del archivo, si lo hay, en la columna B.

Sub GetFileName1()

Dim Delimiter As String     Dim Target As String     Dim sFile As String     Dim J As Integer     Dim iDataLen As Integer

Delimiter = "\"

Range("B1").Select     Do While ActiveCell.Offset(0, -1).Value <> ""

Target = ActiveCell.Offset(0, -1).Value         iDataLen = Len(Target)

sFile = "Delimiter Not Found"

For J = iDataLen To 2 Step -1             If Mid(Target, J, 1) = Delimiter Then                 sFile = Right(Target, iDataLen - J)

Exit For             End If         Next J         ActiveCell.Formula = sFile         ActiveCell.Offset(1, 0).Select     Loop End Sub

También puede usar una versión mucho más corta de una macro, siempre que pueda usar la función Dividir. Esta función se introdujo en la versión de VBA proporcionada con Excel 2000, y separará una cadena en función de un delimitador que especifique y rellenará las partes en una matriz. Este ejemplo muestra la solución implementada como una función definida por el usuario.

Function GetFileName2(File_Path) As String     Dim Parts

Parts = Split(File_Path, Application.PathSeparator)

GetFileName2 = Parts(UBound(Parts))

End Function

En este uso, 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. Para usar la función, ponga una fórmula como esta en una celda:

=GetFileName2(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 (7333) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Extracting_File_Names_from_a_Path [Extrayendo nombres de archivo de una ruta].