Respuestas:
=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
Tomado de otra respuesta (cambiado para buscar puntos y no espacios):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
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
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.
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.
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 p
elemento usando la sintaxis de xpath //p[last()]
.
REGEXEXTRACT(A1, "\.([^.]*)$")