Você já precisou extrair só o nome de usuário de uma lista de e-mails, ou pegar só o primeiro nome de uma coluna de nomes completos, e acabou escrevendo uma fórmula gigante combinando ESQUERDA, LOCALIZAR e às vezes até SEERRO só para não travar quando o texto não tinha o padrão esperado?
Esse tipo de fórmula funciona, mas é difícil de ler depois de pronta, e mais difícil ainda de ajustar quando alguém mais precisa mexer nela. Um erro de contagem de caractere no meio da fórmula já é suficiente para o resultado sair errado sem ninguém perceber de cara.
Neste artigo vamos mostrar como as funções TEXTOANTES e TEXTODEPOIS resolvem isso, extraindo qualquer parte de um texto antes ou depois de um delimitador, em uma fórmula só, sem contar caractere nenhum manualmente.
O que são as funções TEXTOANTES e TEXTODEPOIS
TEXTOANTES e TEXTODEPOIS (equivalentes a TEXTBEFORE e TEXTAFTER na versão em inglês) extraem, respectivamente, o texto que vem antes ou depois de um delimitador que você escolhe — sem precisar calcular posição de caractere.
As sintaxes são praticamente iguais entre as duas:
=TEXTOANTES(texto; delimitador; [núm_da_instância]; [modo_correspondência]; [correspondência_final]; [se_não_encontrado])
=TEXTODEPOIS(texto; delimitador; [núm_da_instância]; [modo_correspondência]; [correspondência_final]; [se_não_encontrado])
- texto: o texto original de onde extrair a parte desejada
- delimitador: o caractere ou texto que marca o ponto de corte
- núm_da_instância (opcional): qual ocorrência do delimitador usar, se ele aparecer mais de uma vez (padrão é a primeira)
- modo_correspondência (opcional): 1 ignora diferença entre maiúsculas e minúsculas
- correspondência_final (opcional): controla o comportamento quando o delimitador não é encontrado
- se_não_encontrado (opcional): o que retornar no lugar do erro padrão, se o delimitador não existir no texto
Exemplo prático
Imagine uma coluna de e-mails de contato:

Para extrair só o nome de usuário (antes do @), a fórmula fica:
=TEXTOANTES(A2; “@”)
E para extrair o domínio (depois do @):
=TEXTODEPOIS(A2; “@”)

Nenhuma das duas fórmulas precisa saber em qual posição exata o “@” está em cada linha — a função encontra sozinha, mesmo que o nome de usuário tenha tamanhos diferentes em cada linha.
Escolhendo qual ocorrência do delimitador usar
Quando o delimitador aparece mais de uma vez no texto, o argumento núm_da_instância decide qual ocorrência usar. Por exemplo, em um nome completo como “Ana Paula Souza Lima”, para pegar só o primeiro nome, a instância padrão (1) do espaço já resolve:
=TEXTOANTES(A2; ” “)
Mas para pegar o último sobrenome, é mais prático contar a partir do final, usando um número negativo:
=TEXTODEPOIS(A2; ” “; -1)
O -1 indica “a partir da última ocorrência do delimitador”, trazendo só a última palavra — nesse caso, “Lima” — sem precisar saber quantos espaços o nome completo tem.
Extraindo texto entre dois delimitadores
Uma combinação útil é usar TEXTOANTES e TEXTODEPOIS juntas para pegar um trecho que fica entre dois delimitadores diferentes. Por exemplo, em um código de pedido como “PEDIDO[4521]CONCLUIDO”, para extrair só o número entre colchetes:
=TEXTOANTES(TEXTODEPOIS(A2; “[“); “]”)
A função de dentro (TEXTODEPOIS) primeiro corta tudo antes do colchete de abertura, sobrando “4521]CONCLUIDO”. Depois, a função de fora (TEXTOANTES) corta tudo depois do colchete de fechamento, deixando só “4521”. Essa combinação evita ter que contar posições de caractere manualmente, mesmo em textos com estrutura mais complexa.
TEXTOANTES/TEXTODEPOIS vs ESQUERDA + LOCALIZAR
✅ TEXTOANTES e TEXTODEPOIS são melhores porque a fórmula já resolve sozinha a posição do delimitador, sem contagem manual de caractere
❌ Fórmulas com ESQUERDA + LOCALIZAR ainda são necessárias em versões do Excel sem essas funções novas, já que TEXTOANTES/TEXTODEPOIS exigem uma versão mais recente
A diferença fica bem clara comparando as duas abordagens para extrair o nome de usuário de um e-mail: com ESQUERDA e LOCALIZAR, a fórmula fica =ESQUERDA(A2;LOCALIZAR(“@”;A2)-1) — funciona, mas exige entender que LOCALIZAR devolve a posição do “@” e que é preciso subtrair 1 pra não incluir o símbolo no resultado. Com TEXTOANTES, é só =TEXTOANTES(A2;”@”).
Delimitador com maiúsculas e minúsculas diferentes
Por padrão, as duas funções diferenciam maiúsculas de minúsculas ao procurar o delimitador. Se o texto tiver o delimitador escrito de formas variadas — por exemplo, “Total:” em algumas linhas e “total:” em outras — use o argumento modo_correspondência como 1 para ignorar essa diferença:
=TEXTODEPOIS(A2; “total:”; 1; 1)
Sem isso, a função só reconheceria o delimitador exatamente como foi digitado na fórmula, podendo retornar erro nas linhas em que a grafia for diferente.
Tratando quando o delimitador não existe
Se o delimitador não for encontrado no texto, por padrão as duas funções retornam o erro #N/D. Para evitar isso — por exemplo, quando alguma célula pode não ter “@” por estar com erro de digitação — use o argumento se_não_encontrado:
=TEXTOANTES(A2; “@”; ; ; ; “e-mail inválido”)
Assim, em vez de um erro travando o resultado, a célula mostra o texto “e-mail inválido”, deixando claro qual linha precisa de atenção.
Disponibilidade
TEXTOANTES e TEXTODEPOIS exigem Microsoft 365 ou Excel 2024. Elas não estão disponíveis em versões perpétuas mais antigas, como Excel 2021, 2019 ou anteriores — nesses casos, a alternativa é montar a fórmula com ESQUERDA, DIREITA e LOCALIZAR.
Extraindo o meio de um texto com três partes
Quando o dado que você precisa está cercado por dois delimitadores diferentes dos dois lados, a combinação de TEXTOANTES e TEXTODEPOIS aninhados pode ser estendida para textos com mais de duas partes. Por exemplo, em uma referência como “BR-SP-SAO-4521”, para extrair só a sigla da cidade (a terceira parte), a fórmula fica =TEXTOANTES(TEXTODEPOIS(TEXTODEPOIS(A2;”-“);”-“);”-“). Cada TEXTODEPOIS avança um delimitador a mais no texto, e o TEXTOANTES final corta no delimitador seguinte. Para estruturas com muitas partes, essa cadeia de funções aninhadas fica longa — nesse caso, DIVIDIRTEXTO seguido de ÍNDICE costuma ser mais simples de ler e manter.
O argumento correspondência_final: o que ele realmente controla
O argumento correspondência_final, opcional e pouco usado, muda o comportamento da função quando o delimitador não é encontrado no texto. Com o valor padrão (0), se o delimitador não existir, a função retorna erro #N/D — a menos que você tenha definido o argumento se_não_encontrado. Já com correspondência_final como 1, a função trata o final (ou início, no caso do TEXTOANTES) do próprio texto como se fosse o delimitador, retornando o texto inteiro em vez de erro. Na prática, correspondência_final como 1 é uma forma alternativa de evitar erro quando o delimitador pode não existir, sem precisar preencher o argumento se_não_encontrado com uma mensagem customizada.
Aplicações práticas em dados importados
Além dos exemplos de e-mail e nome, TEXTOANTES e TEXTODEPOIS são especialmente úteis para limpar dados vindos de sistemas externos. Extrair a extensão de um arquivo a partir do nome completo: =TEXTODEPOIS(A2;”.”;-1) (usando -1 para pegar a partir do último ponto, já que nomes de arquivo podem ter mais de um ponto). Isolar o domínio de uma URL completa, descartando o protocolo: =TEXTOANTES(TEXTODEPOIS(A2;”://”);”/”). Extrair o DDD de um telefone formatado como “(11) 98765-4321”: =TEXTODEPOIS(TEXTOANTES(A2;”)”);”(“). Em todos esses casos, a alternativa com ESQUERDA, DIREITA e LOCALIZAR exigiria calcular manualmente a posição de cada caractere, algo que as funções novas eliminam completamente.
Compartilhe ou Comente
Veja também o nosso guia da função DIVIDIRTEXTO, para separar um texto em várias colunas de uma vez.
Se você curtiu esse artigo aonde mostramos como usar TEXTOANTES e TEXTODEPOIS para extrair partes de um texto sem fórmulas complicadas, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.
Você ainda usa ESQUERDA e LOCALIZAR combinados, ou já testou essas funções novas? Qual tipo de texto você mais precisa recortar na sua planilha? Conta para nós nos comentários!