Como Extrair Número de Texto no Excel com o VBA
Se você precisa extrair número de texto no Excel, uma maneira simples de realizar essa tarefa é utilizando uma função personalizada criada em VBA. Com poucas linhas de código, é possível identificar os números existentes em uma célula e retornar apenas os números encontrados, independentemente de estarem no início, no meio ou no final do texto.
Imagine, por exemplo, que você tenha valores como “Produto 1548“, “Rua A, nº 850“, “Pedido #20256” ou “CEP 13083-852” e precise manter apenas os números dessas informações. Em vez de editar cada célula manualmente ou utilizar fórmulas complexas, você pode criar uma função personalizada e utilizá-la diretamente na planilha sempre que precisar.
Neste artigo, você aprenderá como criar uma função VBA para extrair números de um texto no Excel. Além do código apresentado em nosso vídeo no YouTube, você encontrará outras variações dessa função em VBA para diferentes situações, atendendo a necessidades como extrair apenas determinados números ou tratar diferentes formatos de dados.
Você poderá copiar os códigos diretamente desta página e, se preferir, também poderá baixar gratuitamente a planilha de exemplo com as funções prontas para uso.
Neste guia completo você aprenderá:
- Quando você precisa extrair números de um texto no Excel?
- Como extrair números de um texto usando VBA
- Extrair apenas o primeiro número
- Extrair apenas o último número
- Extrair apenas o primeiro grupo de números
- Extrair apenas o último grupo de números
- Extrair somente letras
- Separar letras e números em colunas diferentes
- Extrair números preservando separadores decimais
- Extrair números preservando hífens
Quando você precisa extrair número de texto no Excel?
A necessidade de extrair números de um texto no Excel é mais comum do que parece. Em muitas planilhas, os números estão misturados com letras, símbolos e outros caracteres, dificultando cálculos, filtros, classificações e análises. Nesses casos, separar apenas os valores numéricos pode economizar muito tempo e evitar o trabalho manual de editar célula por célula.
Veja alguns exemplos de situações em que esse recurso é bastante útil:

Esse tipo de tarefa é frequente em diversas áreas, como:
- Controle de estoque: extrair o código numérico de produtos.
- Cadastros de clientes: obter números de documentos, contratos ou matrículas.
- Pedidos e vendas: separar o número de pedidos para consultas e relatórios.
- Logística: extrair números de endereços, CEPs ou códigos de rastreamento.
- Importação de dados: limpar informações provenientes de sistemas, ERPs ou arquivos CSV.
Nos próximos tópicos, você conhecerá diferentes códigos VBA para extrair número de texto no Excel criando funções personalizadas.
Como extrair número de texto no Excel com VBA
Se você utiliza o Excel e precisa extrair número de texto com frequência, então uma das soluções mais práticas é criar uma função personalizada utilizando VBA (Visual Basic for Applications).
A grande vantagem desse método é que, após adicionar o código à pasta de trabalho, você poderá utilizar uma função personalizada da mesma forma que utiliza funções nativas do Excel, como SOMA, PROCV ou SE. Além disso, a função funciona independentemente da posição dos números na célula, ou seja, ela extrai os dígitos mesmo quando eles estão no início, no meio ou no final do texto.
Para criar a função personalizada, siga os passos abaixo:
1. Abra a planilha onde deseja utilizar a função.
2. Clique na guia Desenvolvedor e selecione Visual Basic. Se a guia Desenvolvedor não estiver habilitada, confira aqui o passo a passo para habilitá-la.

3. No Editor do VBA, acesse Inserir > Módulo.

4. Cole o código abaixo dentro do módulo criado.
Function ExtrairNumero(CellRef As String)
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If IsNumeric(Mid(CellRef, i, 1)) Then Result = Result & Mid(CellRef, i, 1)
Next i
ExtrairNumero = Result
End Function
Após inserir o código, basta fechar o Editor do VBA. Em seguida, retorne à planilha para utilizar a função normalmente.

Como utilizar a função
Depois de criar a função, seu uso é extremamente simples. Suponha que o texto esteja na célula A2.
Na célula onde deseja obter o resultado, digite:
=ExtrairNumero(A2)
Agora pressione Enter. O Excel retornará apenas os números presentes na célula.
Em seguida, utilize a alça de preenchimento para copiar a fórmula para as demais linhas da tabela.

Como o código funciona?
Embora não seja necessário conhecer VBA para utilizar a função, entender sua lógica pode ser útil caso você queira adaptá-la futuramente.
A linha abaixo identifica o tamanho do texto.
StringLength = Len(CellRef)
Em seguida, um laço percorre cada caractere da célula.
For i = 1 To StringLength
A função Mid retorna um caractere por vez.
Mid(CellRef, i, 1)
Depois, a função IsNumeric verifica se esse caractere é um número.
If IsNumeric(Mid(CellRef, i, 1)) Then
Caso seja verdadeiro, o caractere é acrescentado à variável responsável pelo resultado.
Result = Result & Mid(CellRef, i, 1)
Ao final do processo, a função retorna todos os números encontrados.
ExtrairNumero = Result
Essa abordagem torna o código leve, fácil de entender e suficientemente rápido para a maioria das planilhas utilizadas no dia a dia.
Observações importantes
Antes de utilizar essa função, vale a pena conhecer algumas limitações.
- A função extrai todos os números encontrados, independentemente da posição no texto.
- Letras, espaços e caracteres especiais são descartados.
- Se o texto não possuir nenhum número, o resultado será uma célula vazia.
- Números separados por hífens, barras ou outros símbolos serão unidos em uma única sequência.
- Caso deseje utilizá-lo em cálculos, talvez seja necessário convertê-lo em número, dependendo da sua necessidade.
Salve sua planilha corretamente
Como essa solução utiliza VBA, é importante salvar a pasta de trabalho em um formato que suporte macros.
Para isso:
1. Acesse a guia Arquivo > Salvar Como.
2. Escolha o tipo Pasta de Trabalho Habilitada para Macro do Excel (*.xlsm)

Dica importante: Caso o arquivo seja salvo no formato .xlsx, todo o código VBA será removido automaticamente, e a função ExtrairNumero deixará de funcionar.
Outros códigos VBA para Extrair Números de um Texto no Excel
Depois de criar a função básica para extrair todos os números de um texto, você pode adaptá-la para diferentes necessidades. A seguir, reunimos algumas variações úteis do código VBA que permitem extrair apenas um dígito, um grupo de números, somente letras ou até preservar caracteres como vírgulas decimais e hífens. Basta copiar o código desejado e utilizá-lo em sua pasta de trabalho.
Extrair número de texto no Excel (apenas o primeiro)
Em algumas situações, você pode precisar extrair apenas o primeiro dígito encontrado em um texto, ignorando todos os demais números. A função abaixo percorre o conteúdo da célula da esquerda para a direita e retorna o primeiro caractere numérico encontrado.
Por exemplo, se o texto for “Produto 1548“, o resultado será 1. Já para “ABC987XYZ654“, o retorno será 9.
Function PrimeiroNumero(CellRef As String) As String
Dim i As Long
For i = 1 To Len(CellRef)
If IsNumeric(Mid(CellRef, i, 1)) Then
PrimeiroNumero = Mid(CellRef, i, 1)
Exit Function
End If
Next i
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=PrimeiroNumero(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Extrair número de texto no Excel (apenas o último)
Se a sua necessidade é extrair apenas o último dígito presente em um texto, então você pode utilizar a função abaixo. Ela percorre o conteúdo da célula da direita para a esquerda e retorna o primeiro caractere numérico encontrado, que corresponde ao último número existente no texto.
Por exemplo, se o texto for “Produto 1548“, o resultado será 8. Já para “ABC987XYZ654“, o retorno será 4.
Function UltimoNumero(CellRef As String) As String
Dim i As Long
For i = Len(CellRef) To 1 Step -1
If IsNumeric(Mid(CellRef, i, 1)) Then
UltimoNumero = Mid(CellRef, i, 1)
Exit Function
End If
Next i
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=UltimoNumero(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Extrair número de texto no Excel (primeiro grupo)
Em alguns casos, o texto pode conter mais de uma sequência de números, mas você precisa extrair apenas a primeira sequência completa. Diferentemente da função anterior, que retorna apenas o primeiro dígito encontrado, esta função continua lendo os caracteres até o final do primeiro grupo numérico.
Por exemplo, se o texto for “Produto 1548 – Lote 25“, o resultado será 1548. Já para “ABC987XYZ654“, o retorno será 987.
Function PrimeiroGrupoNumero(CellRef As String) As String
Dim i As Long
Dim Resultado As String
Dim EncontrouNumero As Boolean
For i = 1 To Len(CellRef)
If IsNumeric(Mid(CellRef, i, 1)) Then
Resultado = Resultado & Mid(CellRef, i, 1)
EncontrouNumero = True
ElseIf EncontrouNumero Then
Exit For
End If
Next i
PrimeiroGrupoNumero = Resultado
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=PrimeiroGrupoNumero(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Extrair número de texto no Excel (último grupo)
Se o texto contém mais de uma sequência numérica e você deseja obter apenas a última, utilize a função abaixo. Ela percorre o conteúdo da célula da direita para a esquerda, identifica o último grupo de números e o retorna na ordem correta.
Por exemplo, se o texto for “Produto 1548 – Lote 25“, o resultado será 25. Já para “ABC987XYZ654“, o retorno será 654.
Function UltimoGrupoNumero(CellRef As String) As String
Dim i As Long
Dim Resultado As String
Dim EncontrouNumero As Boolean
For i = Len(CellRef) To 1 Step -1
If IsNumeric(Mid(CellRef, i, 1)) Then
Resultado = Mid(CellRef, i, 1) & Resultado
EncontrouNumero = True
ElseIf EncontrouNumero Then
Exit For
End If
Next i
UltimoGrupoNumero = Resultado
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=UltimoGrupoNumero(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Extrair somente letras
Se você precisa realizar o processo inverso, ou seja, remover todos os números e manter apenas as letras do texto, esta função pode ajudar. Ela percorre cada caractere da célula e adiciona ao resultado apenas os caracteres alfabéticos, ignorando números, espaços e símbolos.
Por exemplo, se o texto for “Produto1548“, o resultado será “Produto“. Já para “ABC987XYZ654“, o retorno será “ABCXYZ“.
Function ExtrairLetras(CellRef As String) As String
Dim i As Long
Dim Resultado As String
Dim Caractere As String
For i = 1 To Len(CellRef)
Caractere = Mid(CellRef, i, 1)
If Caractere Like "[A-Za-z]" Then
Resultado = Resultado & Caractere
End If
Next i
ExtrairLetras = Resultado
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=ExtrairLetras(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Separar letras e números em colunas diferentes
Quando um texto contém letras e números misturados, pode ser interessante separar essas informações em colunas distintas. Para isso, basta utilizar em conjunto as funções ExtrairLetras e ExtrairNumero apresentadas anteriormente.
Por exemplo, se a célula A2 contém o valor “Produto1548“, você pode exibir apenas o texto em uma coluna e apenas os números em outra.
Na coluna destinada às letras, utilize:
=ExtrairLetras(A2)
Na coluna destinada aos números, utilize:
=ExtrairNumero(A2)
Depois, basta copiar as fórmulas para as demais linhas utilizando a alça de preenchimento.

Extrair número de texto no Excel (preservando a vírgula decimal)
A função ExtrairNumero apresentada anteriormente remove todos os caracteres que não são números. Em alguns casos, porém, isso pode não ser o comportamento desejado. Se o texto contém valores decimais, como preços, pesos ou medidas, a vírgula também será removida, alterando o valor original.
Para resolver esse problema, utilize a função abaixo. Ela extrai os números e preserva a vírgula decimal, mantendo o formato do valor encontrado.
Por exemplo, se o texto for “Preço: R$ 125,90“, o resultado será 125,90.
Function ExtrairNumeroDecimal(CellRef As String) As String
Dim i As Long
Dim Caractere As String
Dim Resultado As String
For i = 1 To Len(CellRef)
Caractere = Mid(CellRef, i, 1)
If IsNumeric(Caractere) Or Caractere = "," Then
Resultado = Resultado & Caractere
End If
Next i
ExtrairNumeroDecimal = Resultado
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=ExtrairNumeroDecimal(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Observação: esta função considera a vírgula ( , ) como separador decimal, padrão utilizado no Brasil. Se os seus dados utilizam o ponto ( . ) como separador decimal, basta substituir a vírgula pelo ponto na condição Caractere = “,”.
Extrair números preservando hífens (CEP, telefone, códigos)
Em algumas situações, o hífen faz parte da informação e não deve ser removido. É o caso de CEPs, telefones, códigos de produtos e números de série. A função abaixo extrai os números do texto, mas preserva os hífens encontrados, mantendo a estrutura original da informação.
Por exemplo, se o texto for “CEP 13083-852“, o resultado será 13083-852. Da mesma forma, para “Tel.: (19) 99888-7766“, o retorno será 1999888-7766.
Function ExtrairNumeroHifen(CellRef As String) As String
Dim i As Long
Dim Caractere As String
Dim Resultado As String
For i = 1 To Len(CellRef)
Caractere = Mid(CellRef, i, 1)
If IsNumeric(Caractere) Or Caractere = "-" Then
Resultado = Resultado & Caractere
End If
Next i
ExtrairNumeroHifen = Resultado
End Function
Após inserir o código em um módulo do VBA, utilize a função na planilha da seguinte forma:
=ExtrairNumeroHifen(A2)
Pressione Enter e utilize a alça de preenchimento para copiar a fórmula para as demais linhas, se necessário.

Observação: esta função preserva todos os hífens existentes no texto. Caso o conteúdo possua hífens que não façam parte do número (por exemplo, separadores entre palavras), eles também serão mantidos no resultado.
Neste artigo, você aprendeu como criar uma função personalizada em VBA para extrair números de um texto no Excel e conheceu diferentes variações do código para atender situações específicas. Agora você já possui uma coleção de funções VBA prontas para extrair números e letras em diferentes situações, bastando copiar o código mais adequado para a sua necessidade.
Para facilitar os seus testes, disponibilizamos gratuitamente a planilha utilizada neste tutorial. Ela já contém todas as funções VBA apresentadas ao longo deste artigo, além dos exemplos práticos para que você possa começar a utilizá-las imediatamente.
Clique no botão abaixo para baixar a planilha gratuitamente
A planilha contém todos os códigos apresentados neste artigo e os exemplos utilizados em cada demonstração.
Confira também:

