Excel: como extrair o primeiro nome após “, ” (fórmula e VBA)

Tem uma coluna no Excel no formato sobrenome, nome e quer pegar só o primeiro nome? Veja a melhor fórmula (com TEXTAFTER), uma alternativa compatível com versões antigas e um macro VBA para processar a coluna toda, com dicas para erros, regionalização e desempenho.

Índice

Visão geral

O cenário clássico é ter um intervalo com valores como Silva, Ana, Oliveira, Maria Clara, etc., e você precisa extrair apenas o que vem depois da sequência vírgula+espaço (, ) — isto é, o “primeiro nome” (que pode ser composto). Abaixo você encontra três abordagens:

  • Fórmula com TEXTAFTER: simples, moderna e robusta.
  • Fórmula compatível: funciona no Excel antigo (sem TEXTAFTER).
  • VBA: percorre uma coluna e grava o resultado ao lado.

Exemplo rápido

Supondo os dados na coluna A (a partir de A2):

Entrada (A)Resultado esperado (primeiro nome)Observações
Silva, AnaAnaFormato perfeito
Oliveira, Maria ClaraMaria ClaraNome composto
Ferreira, CarlosCarlosDois espaços depois da vírgula
Farias Neto, PedroPedroSobrenome composto
ALMEIDA, juliajuliaEspaços + caixa irregular
SemVirgula(vazio)Sem delimitador “,”
Lima , RafaelRafaelEspaço antes da vírgula
Costa, Ana, PaulaAna, PaulaMais de uma vírgula (exemplo especial)

Fórmula com TEXTAFTER (mais simples)

Se você já tem o Microsoft 365 com as funções modernas, esta é a forma mais direta:

=TRIM(TEXTAFTER(A2, ", "))

Explicação:

  • TEXTAFTER(A2, ", ") devolve tudo que vem depois da sequência , .
  • TRIM(...) remove espaços extras no começo/fim e normaliza múltiplos espaços internos.

Para evitar erros quando a célula não tiver vírgula, envolva com IFERROR:

=IFERROR(TRIM(TEXTAFTER(A2, ", ")), "")

Variação tolerante a espaços irregulares

Se houver casos como "Sobrenome , Nome" (espaços espalhados), use a vírgula como delimitador, sem o espaço, e deixe o TRIM limpar:

=IFERROR(TRIM(TEXTAFTER(A2, ",")), "")

Quando há várias vírgulas

Por padrão, TEXTAFTER pega o que vem após a primeira vírgula. Se você precisar do texto após a última vírgula (por exemplo, "Silva, Ana, Filha""Filha"), use o argumento opcional de instância com valor negativo:

=IFERROR(TRIM(TEXTAFTER(A2, ",", -1)), "")

Refinando com LET (opcional)

Para fórmulas mais legíveis e fáceis de manter:

=LET(x, A2, IFERROR(TRIM(TEXTAFTER(x, ",")), ""))

Dica: em algumas localizações, o separador de argumentos é ; em vez de ,. Se o Excel acusar erro de sintaxe, troque as vírgulas por ponto e vírgula.

Fórmula sem TEXTAFTER (compatibilidade)

Funciona em versões antigas do Excel (2010/2013/2016/2019) e em ambientes sem as funções novas:

=TRIM(MID(A2, FIND(", ", A2) + 2, LEN(A2)))

Explicação:

  • FIND(", ", A2) devolve a posição do delimitador , .
  • + 2 avança duas posições (vírgula + espaço).
  • MID(A2, ... , LEN(A2)) pega todo o resto da string a partir desse ponto.
  • TRIM(...) elimina espaços extras.

Para tolerar espaços irregulares e células sem vírgula, use a vírgula isolada e IFERROR:

=IFERROR(TRIM(MID(A2, FIND(",", A2) + 1, LEN(A2))), "")

Após a última vírgula no Excel antigo

Sem TEXTAFTER, dá para localizar a última vírgula substituindo-a por um marcador temporário e encontrando sua posição:

=TRIM(
  MID(
    A2,
    FIND("@", SUBSTITUTE(A2, ",", "@", LEN(A2)-LEN(SUBSTITUTE(A2, ",", "")))) + 1,
    LEN(A2)
  )
)

O truque é esse: LEN(A2)-LEN(SUBSTITUTE(A2,",","")) conta quantas vírgulas existem; depois, SUBSTITUTE(..., ",", "@", <quantidade>) troca a última vírgula pelo símbolo @. Em seguida, FIND localiza o @, e MID extrai tudo depois dele. Finalize com TRIM.

VBA para percorrer a coluna

Se você preferir um processo pontual (sem fórmulas), o VBA é prático. O exemplo abaixo lê cada célula em A2:A10, encontra a sequência , e grava o texto após ela na coluna ao lado (B):

Sub ExtrairPrimeiroNome()
    Dim c As Range, p As Long
    For Each c In Range("A2:A10") ' ajuste o intervalo
        p = InStr(c.Value, ", ")
        If p &gt; 0 Then c.Offset(0, 1).Value = Trim(Mid(c.Value, p + 2))
    Next c
End Sub

VBA usando Split (simples e legível)

Sub ExtrairPrimeiroNomeSplit()
    Dim c As Range, partes() As String
    For Each c In Range("A2:A10") ' ajuste o intervalo
        partes = Split(c.Value, ",")
        If UBound(partes) &gt;= 1 Then
            c.Offset(0, 1).Value = Trim(partes(1))
        Else
            c.Offset(0, 1).Value = ""
        End If
    Next c
End Sub

VBA rápido para intervalos grandes

Para centenas de milhares de linhas, é melhor trabalhar em memória (array) e escrever de volta ao final:

Sub ExtrairPrimeiroNomeRapido()
    Dim ws As Worksheet, rng As Range, v, out(), i As Long, p As Long
    Set ws = ActiveSheet
    Set rng = ws.Range("A2", ws.Cells(ws.Rows.Count, "A").End(xlUp))
    If rng.Rows.Count = 1 And rng.Value = "" Then Exit Sub```
v = rng.Value ' carrega dados da coluna A
ReDim out(1 To UBound(v, 1), 1 To 1)

For i = 1 To UBound(v, 1)
    p = InStr(1, v(i, 1), ",")
    If p > 0 Then
        out(i, 1) = Trim(Mid$(v(i, 1), p + 1))
    Else
        out(i, 1) = ""
    End If
Next i

rng.Offset(0, 1).Resize(UBound(out, 1), 1).Value = out ' grava na coluna B
```
End Sub 

Função personalizada (UDF) para usar na planilha

Se quiser chamar uma função direto na célula, crie esta UDF:

Function PrimeiroNomeDepoisDaVirgula(ByVal Texto As String) As String
    Dim p As Long
    p = InStr(1, Texto, ",")
    If p &gt; 0 Then
        PrimeiroNomeDepoisDaVirgula = Trim(Mid$(Texto, p + 1))
    Else
        PrimeiroNomeDepoisDaVirgula = ""
    End If
End Function

Depois, em B2, use:

=PrimeiroNomeDepoisDaVirgula(A2)

Passo a passo para rodar o VBA

  1. Pressione Alt + F11 para abrir o Editor do VBA.
  2. Menu Inserir > Módulo e cole um dos códigos acima.
  3. Volte ao Excel, salve como pasta habilitada para macro (.xlsm).
  4. Pressione Alt + F8, selecione a macro e clique em Executar.

Soluções nativas sem fórmula nem código

Texto para Colunas

  1. Selecione a coluna com os nomes (A).
  2. Acesse Dados > Texto para Colunas.
  3. Escolha Delimitado > Avançar > marque Vírgula (desmarque outros).
  4. Avançar > Concluir. O primeiro nome irá para a coluna B.

Preenchimento Relâmpago (Flash Fill)

  1. Em B2, digite manualmente o primeiro nome referente a A2.
  2. Comece a digitar em B3; o Excel sugerirá um padrão.
  3. Confirme com Ctrl + E.

Casos especiais e como tratar

CenárioSugestão (Excel moderno)Sugestão (Excel antigo)
Sem vírgula na célula=IFERROR(TRIM(TEXTAFTER(A2, ",")), "")=IFERROR(TRIM(MID(A2, FIND(",", A2)+1, LEN(A2))), "")
Espaços “grudados” ou múltiplos=TRIM(TEXTAFTER(A2, ","))=TRIM(MID(A2, FIND(",", A2)+1, LEN(A2)))
Caracteres invisíveis (quebra de linha, NBSP)=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," "))) em pré-tratamentoMesma ideia: aplique CLEAN e SUBSTITUTE antes de extrair
Após a última vírgula=TRIM(TEXTAFTER(A2, ",", -1))Fórmula “do marcador” com SUBSTITUTE (veja acima)
Delimitador diferente (por ex., ponto e vírgula)Troque "," por ";" na fórmulaTroque "," por ";" nas funções
Deseja capitalizar o primeiro nome=PROPER( TRIM(TEXTAFTER(A2, ",")) )=PROPER( TRIM(MID(A2,FIND(",",A2)+1,LEN(A2))) )

Desempenho e boas práticas

  • Planilhas pequenas a médias (até dezenas de milhares de linhas): fórmulas são simples, auditáveis e atualizam sozinhas.
  • Planilhas enormes (centenas de milhares/milhões): prefira um processo pontual (VBA, Texto para Colunas ou Power Query) para evitar recálculos custosos.
  • Após conferir os resultados, considere colar como valores para “congelar” o texto e agilizar a pasta.
  • Se usar fórmulas com FIND/SEARCH, TRIM quase sempre ajuda a limpar espaços antes de comparações.

FAQ rápidas

Quais versões do Excel têm TEXTAFTER? Ele faz parte do conjunto de funções mais recentes do Microsoft 365. Em versões antigas, use a alternativa com MID/FIND.

Posso sobrescrever a própria coluna? Use uma coluna auxiliar para gerar os primeiros nomes, depois copie e cole como valores de volta na coluna original (com cuidado para não perder dados).

Também preciso do sobrenome. Para o que vem antes da vírgula, use no Excel moderno: =TRIM(TEXTBEFORE(A2, ",")); no Excel antigo: =TRIM(LEFT(A2, FIND(",", A2) - 1)).

Compatibilidade de nomes de funções e regionalização

As fórmulas acima estão no padrão em inglês. Em ambientes lusófonos, nomes e separadores podem variar. Alguns mapeamentos comuns (podem mudar conforme a versão/local):

InglêsPortuguês (comum)Observações
TRIMARRUMARRemove espaços extras
MIDEXT.TEXTOExtrai parte de texto por posição
LENNÚM.CARACTConta caracteres
FINDLOCALIZARDifere de SEARCH/PROCURAR por considerar maiúsc./minúsc.
SEARCHPROCURARIgnora maiúsc./minúsc.
TEXTAFTER(equivalente local, por ex. “Texto após”)O nome exato pode variar conforme região/versão
IFERRORSEERROTrata erros e permite retorno alternativo
CLEANLIMPARRemove caracteres não imprimíveis
SUBSTITUTESUBSTITUIRTroca ocorrências de texto
PROPERNOMEPROPRIOCapitaliza nomes

Além disso, em muitas configurações lusófonas o separador de argumentos é ponto e vírgula (;) — ajuste se necessário.

Escolha rápida: quando usar cada opção

MétodoUse quando…PrósContras
Fórmula com TEXTAFTERVocê tem Microsoft 365 atualizadoSimples, legível, robusto (instância negativa, erro opcional)Indisponível em versões antigas
Fórmula compatível (MID/FIND)Versões antigas do ExcelAlta compatibilidade, sem dependência de funções novasUm pouco mais longa e menos intuitiva
VBAPrecisa “resolver e fixar” de uma vez; volumes muito grandesRápido em massa, resultado gravado como valorExige habilitar macros e manter código
Texto para ColunasTransformação pontual e guiadaSem fórmulas, fácil para usuários iniciantesNão “acompanha” dados novos automaticamente
Preenchimento RelâmpagoPadrões visuais simplesRápido, sem fórmulasDependente de reconhecimento de padrão

Resumo prático

  • Melhor atalho hoje: =IFERROR(TRIM(TEXTAFTER(A2, ",")), ""). Funciona bem mesmo com espaços “tortos”.
  • Excel antigo: =IFERROR(TRIM(MID(A2, FIND(",", A2) + 1, LEN(A2))), "").
  • Várias vírgulas: moderno → TEXTAFTER com -1; antigo → “marcador” com SUBSTITUTE.
  • Volumes enormes: VBA ou Texto para Colunas/Power Query, depois colar como valores.

Copie e cole as principais soluções:

Excel moderno:

=TRIM(TEXTAFTER(A2, ", "))
=IFERROR(TRIM(TEXTAFTER(A2, ", ")), "")
=IFERROR(TRIM(TEXTAFTER(A2, ",")), "")
=IFERROR(TRIM(TEXTAFTER(A2, ",", -1)), "")

Excel antigo:

=TRIM(MID(A2, FIND(", ", A2) + 2, LEN(A2)))
=IFERROR(TRIM(MID(A2, FIND(",", A2) + 1, LEN(A2))), "")

Após a última vírgula (sem TEXTAFTER):

=TRIM(
  MID(
    A2,
    FIND("@", SUBSTITUTE(A2, ",", "@", LEN(A2)-LEN(SUBSTITUTE(A2, ",", "")))) + 1,
    LEN(A2)
  )
)

Com essas opções, você cobre do Excel mais recente ao legado, lida com espaços extras, várias vírgulas e milhares de linhas sem suar. Escolha a abordagem que combina com sua versão e com o volume de dados — e siga em frente 😉

Índice