Como Extrair Apenas os Números de um Texto Misturado no Excel

Para extrair apenas os números de dentro de um texto misturado no Excel 365, use a fórmula =UNIRTEXTO(“”;VERDADEIRO;SE(ÉNÚM(VALOR(EXT.TEXTO(A2;SEQUÊNCIA(NÚM.CARACT(A2));1)));EXT.TEXTO(A2;SEQUÊNCIA(NÚM.CARACT(A2));1);””)). Ela varre cada caractere do texto, um por um, e mantém só os que são dígitos, remontando o resultado na ordem original, como texto.

Você já recebeu uma planilha com códigos de produto, números de pedido ou telefones onde letras e números estão todos misturados na mesma célula — como “PED-2024-8873” ou “Sala 305B” — e precisou separar só a parte numérica para calcular, ordenar ou cruzar com outra base?

Diferente de separar um texto em duas colunas com um delimitador fixo (um espaço, um hífen), aqui o desafio é outro: os números podem estar em qualquer posição dentro do texto, sem um padrão fixo, o que torna funções simples como ESQUERDA ou EXT.TEXTO sozinhas insuficientes — elas exigiriam saber de antemão em qual posição exata cada número começa e termina, o que muda de linha para linha.

Neste artigo iremos mostrar como extrair só os números de um texto misturado, qualquer que seja a posição deles dentro da célula, com a fórmula para quem já tem Microsoft 365, uma variante para o Excel 2019 e uma alternativa em Power Query para versões mais antigas.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

A base do exemplo

Considere os textos abaixo, todos com letras e números misturados sem nenhum padrão fixo de posição:

Texto original Só os números (texto) Como número (VALOR)
Produto AB123XY45 12345 12345
Pedido nº 00789-SP 00789 789
Telefone (11) 98888-7777 11988887777 11988887777

Repare que a posição dos números varia de linha para linha: no primeiro exemplo, o texto começa com letras; no segundo, começa com um número. É exatamente esse tipo de situação — sem posição fixa — que a fórmula a seguir resolve.

A fórmula para o Excel 365: UNIRTEXTO + SEQUÊNCIA

=UNIRTEXTO(“”;VERDADEIRO;SE(ÉNÚM(VALOR(EXT.TEXTO(A2;SEQUÊNCIA(NÚM.CARACT(A2));1)));EXT.TEXTO(A2;SEQUÊNCIA(NÚM.CARACT(A2));1);””))

Por dentro, essa fórmula funciona assim: NÚM.CARACT(A2) conta quantos caracteres tem o texto, e SEQUÊNCIA(NÚM.CARACT(A2)) gera uma lista com os números de 1 até esse total — uma posição para cada caractere. Para cada posição dessa lista, EXT.TEXTO(A2;posição;1) extrai um único caractere, e ÉNÚM(VALOR(…)) testa se aquele caractere isolado pode virar número: se puder (for um dígito de 0 a 9), o SE mantém o próprio caractere; se não puder (for letra, espaço ou símbolo), o SE devolve um texto vazio (“”). Por fim, a função UNIRTEXTO junta todos os resultados em sequência, ignorando os textos vazios — restando só os dígitos, na ordem original, como texto (por isso zeros à esquerda não somem).

A mesma fórmula para o Excel 2019 (sem a função SEQUÊNCIA)

A função SEQUÊNCIA só existe a partir do Microsoft 365. Se você tem o Excel 2019 (que já tem UNIRTEXTO, mas ainda não tem SEQUÊNCIA nem matrizes dinâmicas), troque SEQUÊNCIA por LINHA(INDIRETO()) e confirme a fórmula com Ctrl+Shift+Enter em vez de só Enter:

=UNIRTEXTO(“”;VERDADEIRO;SE(ÉNÚM(VALOR(EXT.TEXTO(A2;LINHA(INDIRETO(“1:”&NÚM.CARACT(A2)));1)));EXT.TEXTO(A2;LINHA(INDIRETO(“1:”&NÚM.CARACT(A2)));1);””))

A lógica é idêntica à fórmula anterior — só muda a forma de gerar a lista de posições de 1 até o total de caracteres. O Ctrl+Shift+Enter é necessário porque, sem matrizes dinâmicas nativas, o Excel 2019 precisa ser avisado explicitamente de que a fórmula deve ser calculada para cada posição da lista, e não só para a primeira.

Alternativa para versões mais antigas: Power Query

Em versões sem a função UNIRTEXTO (Excel 2016 e anteriores), a forma mais confiável de extrair só os dígitos de um texto é usar o Power Query (disponível a partir do Excel 2010 como suplemento, e nativo a partir do Excel 2016), com a função Text.Select na Fórmula Personalizada de uma coluna:

= Text.Select([Texto], {“0”..”9″})

Essa função do Power Query seleciona, dentro de cada texto, apenas os caracteres que estejam no intervalo indicado (aqui, os dígitos de “0” a “9”), descartando todos os outros — exatamente o mesmo resultado das fórmulas anteriores, só que aplicado a uma coluna inteira de uma vez dentro de uma consulta.

Convertendo o resultado em número, se precisar

Todas as fórmulas acima devolvem o resultado como texto. Se você precisar do resultado como um número de verdade — para somar, por exemplo — basta envolver a fórmula inteira com VALOR(…). Só lembre que, nesse caso, zeros à esquerda desaparecem: “00789” como texto vira 789 como número, porque número não guarda zero à esquerda.

Diferença para a função CONT.NUM

Vale reforçar que este artigo resolve um problema diferente do nosso artigo sobre a função CONT.NUM: a CONT.NUM conta quantas células inteiras de um intervalo contêm um valor numérico — ela não olha para dentro do texto de uma célula para separar dígitos de letras. Se o que você precisa é contar células, não extrair dígitos de dentro de um texto misturado, a CONT.NUM é a função certa.

Disponibilidade

A fórmula com UNIRTEXTO e SEQUÊNCIA exige o Microsoft 365 ou Excel 2021 em diante. A variante com LINHA(INDIRETO()) funciona a partir do Excel 2019 (quando a UNIRTEXTO foi introduzida), usando Ctrl+Shift+Enter. Para versões anteriores, a alternativa em Power Query com Text.Select funciona a partir do Excel 2010 (como suplemento) ou 2016 (nativo). No Google Sheets, a função REGEXEXTRACT (que não existe no Excel tradicional) resolve o mesmo problema de forma ainda mais direta, usando um padrão de expressão regular.

Erros comuns ao extrair números de texto

Um erro comum é esquecer o Ctrl+Shift+Enter ao confirmar a variante para Excel 2019 — sem isso, o Excel calcula só a primeira posição da lista, e o resultado sai incompleto (só o primeiro caractere). Outro ponto de atenção é que essas fórmulas tratam vírgula, ponto e sinal de menos como caracteres não numéricos — então um texto como “R$ -12,50” extrai apenas “1250”, sem o sinal negativo nem a casa decimal, já que o objetivo aqui é separar dígitos isolados, não interpretar números decimais completos.

Perguntas frequentes

Por que a fórmula devolve o resultado como texto, e não como número?

Porque assim os zeros à esquerda são preservados — um código como “00789” continua com os dois zeros na frente, em vez de virar 789. Se para o seu caso o resultado precisa mesmo ser um número (para somar, por exemplo), basta envolver a fórmula inteira com VALOR(…), mas lembre que nesse caso os zeros à esquerda somem, já que número não guarda zero à esquerda.

A função CONT.NUM resolve o mesmo problema?

Não. A CONT.NUM serve para contar quantas células de um intervalo contêm números — ela não olha para dentro do texto de uma célula única para separar dígitos de letras. Já mostramos a sintaxe completa da CONT.NUM em nosso artigo dedicado à função, que resolve um problema diferente deste aqui.

Essa fórmula também funciona para extrair só as letras (o oposto dos números)?

Sim, com uma pequena troca: inverta o teste lógico, usando SE(NÃO(ÉNÚM(VALOR(…)));…) em vez de SE(ÉNÚM(VALOR(…));…), para manter apenas os caracteres que não são dígitos, extraindo as letras e símbolos do texto misturado.

Compartilhe ou Comente

Se você curtiu esse artigo aonde mostramos como extrair apenas os números de um texto misturado no Excel, 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ê precisou extrair números de códigos de produto, números de pedido ou de outro tipo de texto misturado? Já tinha usado o Power Query para esse tipo de limpeza de dados antes? Conta para nós nos comentários!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *