Como obter extensão de arquivo no MS Excel?

10

Eu tenho uma coluna contendo caminhos de arquivo. Quero criar outra coluna que contenha apenas as extensões dos caminhos. Como posso fazer isso no Microsoft Excel?

Nam G VU
fonte
1
Para quem está procurando como fazer isso na Google Spreadsheet, você pode usarREGEXEXTRACT(A1, "\.([^.]*)$")
Joe

Respostas:

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

Essa fórmula será útil se você tiver mais de um ponto no nome do arquivo

Kirill
fonte
2
Observe que isso funciona apenas para extensões de arquivo com quatro caracteres ou menos.
Tim Robinson
1
Você pode simplesmente mudar o 5 para o 6 ou o que for, certo?
Advogado do dia
Não, isso causa problemas.
Advogado do diabo
4

Retirado de outra resposta (alterado para procurar pontos e não espaços):

=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
user273281
fonte
funciona um deleite! Obrigado pela solução rápida de copiar / colar. Funciona para extensões de arquivo com extensões de arquivo de 2 a 7 caracteres com notação de caminhos completos e espaços para nome no nome do arquivo.
Zephan Schroeder
2

A resposta Cyril funciona apenas se a extensão tiver 3 ou 4 caracteres e a resposta user273281 não funcionou quando havia .(pontos) no nome do arquivo.

Por isso, descobri uma nova maneira de conseguir isso,

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

Nota: o respondedor de user273281 não funcionou para o caso em que o nome do arquivo estava 1. Macro based file.zip. Retorna. Macro based file.zip

Adarsh
fonte
0

Supondo que você tenha extensões bem formatadas, você pode fazer isso rapidamente como =RIGHT(A1,3). Uma solução mais robusta encontraria o índice da direita .e extrairia os caracteres restantes.

ta.speot.is
fonte
Lendo sua pergunta, essa é a resposta que eu daria.
VerGuy 17/05
Eu acho que a verdadeira questão aqui é: como encontrar o "." Mais à direita no Excel.
Petersohn 17/05/10
A extensão não está sempre em 3 caracteres. @pertersohn: Sim, você está certo.
Nam G VU
0

Me deparei com isso, que é a solução mais simples que eu já vi ...

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

Funciona porque separa todos os caracteres após o último período de todos os outros caracteres por 50 períodos, ou qualquer número que você escolher. Você pode selecionar os 50 caracteres mais à direita, sabendo que não está selecionando nada além de seus caracteres de extensão e vários períodos. Substitua os períodos e você está pronto para ir.

Fonte

Alternativa: Análise XML


Um truque interessante que às vezes uso para análise de string em geral é alavancar a FilterXML()função (Excel 2013 e posterior). A estratégia básica é usar Substitute()para formatar sua cadeia de caracteres de forma que ela seja analisada entre elementos em uma cadeia de caracteres xml e, em seguida, você pode usar a sintaxe xpath para navegar convenientemente por seus elementos analisados. Usando essa estratégia, obter uma extensão ficaria assim ...

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

Se você não conhece o xml, isso pode parecer intimidador, mas se você consegue entender o que está acontecendo, acho que é mais limpo, mais flexível e mais fácil de lembrar do que as abordagens alternativas que usam len (), substitute (), etc. Uma razão pela qual é melhor é porque há apenas uma referência de célula.

Personagens Ilegais

Existem dois caracteres permitidos nos caminhos, mas não no xml: &e'

A equação acima funcionará se esses caracteres não estiverem presentes; caso contrário, eles precisarão ser manipulados com algo assim ...

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

Exemplo

Suponha que tenhamos um caminho de arquivo desagradável como este:

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

1.) A Substitution()parte irá convertê-lo em uma string xml como esta ...

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

2.) Depois de formatado assim, é trivial escolher o último pelemento usando a sintaxe xpath //p[last()].

u8it
fonte