Fórmula do Excel: Remover última palavra -

Índice

Fórmula genérica

=MID(A1,1,FIND("~",SUBSTITUTE(A1," ","~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-1)

Resumo

Para remover a última palavra de uma string de texto, você pode usar uma fórmula baseada na função MID, com a ajuda de SUBSTITUTE, LEN e FIND. No exemplo mostrado, a fórmula na célula B5 é:

=MID(B5,1,FIND("~",SUBSTITUTE(B5," ","~",LEN(B5)-LEN(SUBSTITUTE(B5," ",""))))-1)

Explicação

Esta fórmula usa a função MID para remover a última palavra de uma string de texto. O principal desafio é descobrir onde começa a última palavra.

A fórmula é um pouco complicada, mas os passos são simples. Primeiro contamos quantos espaços existem no texto usando LEN e SUBSTITUTE. Em seguida, usamos o argumento "instância" um tanto obscuro na função SUBSTITUTE para substituir o último espaço por um til (~). Por fim, usamos FIND para descobrir onde está o til e a função MID para descartar tudo após o til.

Trabalhando de dentro para fora, usamos as funções LEN e SUBSTITUTE para contar quantos espaços aparecem no próximo:

LEN(B5)-LEN(SUBSTITUTE(B5," ","")) // returns 6

Para o texto em B5, retorna 6. Esta página explica esta parte da fórmula com mais detalhes. Isso nos diz que queremos cortar o texto no sexto caractere de espaço.

Nota: se as palavras forem separadas por mais de um espaço, você desejará normalizar os espaços primeiro com a função TRIM.

O número 6 é então conectado a outro SUBSTITUTO como o "número da instância":

SUBSTITUTE(B5," ","~",6) // insert tilde

Aqui, estamos substituindo a 6ª instância de um espaço ("") por um til (~). Depois que SUBSTITUTE é executado, ele retorna esta string:

"It's been seven hours and fifteen~days"

Nota: usamos um til (~) apenas porque é um caractere que ocorre raramente. Você pode usar qualquer caractere que desejar, desde que não apareça no texto fonte.

Em seguida, usamos a função FIND para localizar o til:

FIND("~","It's been seven hours and fifteen~days")-1

FIND retorna 34, já que o til é o 34º caractere. Subtraímos 1 deste número, porque não queremos incluir o último espaço no resultado final. Agora podemos simplificar a fórmula para:

=MID(B5,1,33) // extract final text

A função MID retorna os caracteres 1-33:

"It's been seven hours and fifteen"

Com um delimitador personalizado

A mesma fórmula pode ser usada com um delimitador diferente. Por exemplo, para remover todo o texto após a última barra "/", você pode usar:

=MID(A1,1,FIND("~",SUBSTITUTE(A1,"/","~",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))-1)

Remover as últimas n palavras

Você pode adaptar a fórmula para remover as últimas 2 palavras, últimas 3 palavras, etc. A forma geral é:

=MID(A1,1,FIND("~",SUBSTITUTE(A1,d,"~",LEN(A1)-LEN(SUBSTITUTE(A1,d,""))-(n-1)))-1)

onde d é o delimitador e n é o número de palavras a serem removidas.

Artigos interessantes...