¿Cómo obtener la extensión de archivo en MS Excel?

10

Tengo una columna que contiene rutas de archivos. Quiero hacer otra columna que contenga solo las extensiones de las rutas. ¿Cómo puedo hacer esto en Microsoft Excel?

Nam G VU
fuente
1
Para cualquiera que esté buscando cómo hacer esto en la hoja de cálculo de Google, puede usarREGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Respuestas:

20
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")

Esta fórmula será útil si tiene más de un punto en el nombre del archivo

Kirill
fuente
2
Tenga en cuenta que esto solo funciona para extensiones de archivo de cuatro caracteres o menos.
Tim Robinson
1
Puedes cambiar el 5 a un 6 o lo que sea, ¿verdad?
Abogado del Diablo
No, eso causa problemas.
Abogado del Diablo
4

Tomado de otra respuesta (cambiado para buscar puntos y no espacios):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
usuario273281
fuente
funciona de maravilla! Gracias por la solución rápida de copiar / pegar. Funciona para extensiones de archivo con extensiones de archivo de 2 a 7 caracteres con rutas completas y notación de espacios de nombres en el nombre del archivo.
Zephan Schroeder
2

La respuesta de Cyril solo funciona si la extensión tiene 3 o 4 caracteres y la respuesta del usuario 273281 no funciona cuando hay .(puntos) en el nombre del archivo.

Por lo tanto, descubrí una nueva forma de lograr esto,

=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))

Nota: la respuesta del usuario 273281 no funcionó para el caso donde estaba el nombre del archivo 1. Macro based file.zip. Vuelve. Macro based file.zip

Adarsh
fuente
0

Suponiendo que tiene extensiones bien formateadas, puede hacerlo rápidamente como =RIGHT(A1,3). Una solución más robusta encontraría el índice del extremo derecho .y luego extraería los caracteres restantes.

ta.speot.is
fuente
Leer su pregunta es la respuesta que le habría dado.
VerGuy
Creo que la verdadera pregunta aquí es: cómo encontrar el "." Más correcto en Excel
petersohn
La extensión no está siempre en 3 caracteres. @pertersohn: Sí, tienes razón.
Nam G VU
0

Encontré esto, que es la solución más simple que he visto ...

=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")

Funciona porque separa cualquier carácter después del último período alejado de todos los demás caracteres por 50 puntos, o cualquier número que elija. Luego puede seleccionar los 50 caracteres más a la derecha sabiendo que no está seleccionando nada más que sus caracteres de extensión y un montón de puntos. Sustituya los períodos y estará listo para comenzar.

Fuente

Alternativa: análisis XML


Un buen truco que a veces uso para el análisis de cadenas en general es aprovechar la FilterXML()función (Excel 2013 y versiones posteriores). La estrategia básica es usar Substitute()para formatear su cadena de forma que se analice a través de elementos en una cadena xml, y luego puede usar la sintaxis de xpath para navegar convenientemente sus elementos analizados. Usando esta estrategia, obtener una extensión se vería así ...

=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")

Si no está familiarizado con xml, esto puede parecer intimidante, pero si puede comprender lo que está sucediendo, creo que es más limpio, más flexible y más fácil de recordar que los enfoques alternativos que usan len (), sustituto (), Una de las razones por las que es más agradable es porque solo hay una referencia de celda.

Caracteres ilegales

Hay dos caracteres permitidos en las rutas pero no en xml: &y'

La ecuación anterior funcionará si estos caracteres no están presentes, de lo contrario, deberán manejarse de esta manera ...

=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")

Ejemplo

Supongamos que tenemos una ruta de archivo desagradable como esta:

C: \ Carpeta1 \ Carpeta2 \ (caracteres feos! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt

1.) La Substitution()porción la convertirá en una cadena xml como esta ...

<A>
    <p>
        C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
    </p>
    <p>
        .dots
    </p>
    <p>
        .txt
    </p>
</A>

2.) Una vez formateado de esta manera, es trivial elegir el último pelemento usando la sintaxis de xpath //p[last()].

u8it
fuente