Risposte:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
Questa formula sarà utile se hai più di un punto nel nome del file
Tratto da un'altra risposta (modificato per cercare punti e non spazi):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
La risposta Cyril funziona solo se l'estensione è di 3 o 4 caratteri e la risposta user273281 non ha funzionato quando c'erano .(punti) nel nome del file.
Quindi ho scoperto un nuovo modo per raggiungere questo obiettivo,
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
Nota: la risposta di user273281 non ha funzionato nel caso in cui il nome del file fosse 1. Macro based file.zip. Ritorna. Macro based file.zip
Supponendo di avere estensioni ben formattate, puoi farlo rapidamente come =RIGHT(A1,3). Una soluzione più solida troverebbe l'indice .dell'estrema destra e quindi estrarrà i caratteri rimanenti.
Mi sono imbattuto in questo, che è la soluzione più semplice che abbia mai visto ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
Funziona perché separa tutti i caratteri dopo l'ultimo periodo da tutti gli altri caratteri di 50 punti o qualsiasi numero tu scelga. È quindi possibile selezionare i 50 caratteri più a destra sapendo che non si sta selezionando altro che i caratteri di estensione e un mucchio di punti. Sostituisci i periodi e sei pronto per partire.
Alternativa: analisi XML
Un trucco accurato che a volte utilizzo per l'analisi delle stringhe in generale è sfruttare la FilterXML()funzione (Excel 2013 e versioni successive). La strategia di base consiste nell'utilizzare Substitute()per formattare la stringa in modo che venga analizzata tra gli elementi in una stringa xml, quindi è possibile utilizzare la sintassi xpath per navigare comodamente tra gli elementi analizzati. Usando questa strategia, ottenere un'estensione sarebbe simile a questo ...
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
Se non hai familiarità con XML, questo può sembrare intimidatorio, ma se riesci a capire cosa sta succedendo, trovo che sia più pulito, più flessibile e più facile da ricordare rispetto agli approcci alternativi che usano len (), substitute (), ecc. Uno dei motivi per cui è più bello è perché c'è solo un riferimento di cella.
Personaggi illegali
Esistono due caratteri consentiti nei percorsi ma non in xml: &e'
L'equazione sopra funzionerà se questi personaggi non sono presenti, altrimenti dovranno essere gestiti qualcosa del genere ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
Esempio
Supponiamo di avere un brutto percorso di file come questo:
C: \ Folder1 \ Folder2 \ (caratteri brutti! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.) La Substitution()porzione lo convertirà in una stringa xml come questa ...
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.) Una volta formattato in questo modo, è banale scegliere l'ultimo pelemento usando la sintassi xpath //p[last()].
REGEXEXTRACT(A1, "\.([^.]*)$")