▷ Extrair Números no Excel

Olá seja bem vindo ao meu mais novo artigo!

Ao longo da minha carreira no MS Excel sempre me deparei com vários sistemas e com os dados que são extraído deles, dados inconsistentes, dados agrupados, dados chamados não-estruturados, eu os chamo de "dados deselegantes",

Segue abaixo um conjunto de dados "deselegantes"

As respostas encontradas em diversos sites são para exemplos com caracteres fixos, no caso da imagem acima, deve iniciar o recorte do valor no 4° caractere e retirar 4 caracteres, segue a fórmula abaixo para realizar essa estratégia no MS Excel.

=EXT.TEXTO(B3;4;4)*1

ou em inglês

=MID(B3;4;4)*1

Mas se tivéssemos caracteres variáveis? Qual seria a solução?

Visando este problema, desenvolvi abaixo dois exemplos dinâmico, retornando somente os valores numéricos de uma célula, segue

1° Exemplo - Texto-Valor-Texto

Neste exemplo, nota-se que os dados são não estruturados, onde não tem uma sequência lógica do aumento de caracteres e números. Para resolver esta questão, segue a fórmula dinâmica para a remoção dos caracteres de texto e retornando somente os caracteres numéricos

Fórmula na Célula C3

=EXT.TEXTO(B3;CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"&NUM.CARACT(B3) ));1)*1);0);0); AGREGAR(14;6;ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NUM.CARACT(B3)));1)*1)*LIN(INDIRETO("1:"& NUM.CARACT(B3)));1)-CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN( INDIRETO("1:"& NUM.CARACT(B3)));1)*1);0);0)+1)*1

ou em inglês

=MID(B3;MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW( INDIRECT("1:"& LEN(B3)));1)*1);0);0); AGGREGATE(14;6;ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1)*ROW(INDIRECT("1:"& LEN(B3)));1)-MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW( INDIRECT("1:"& LEN(B3)));1)*1);0);0)+1)*1

Com esta fórmula é possível adicionar qualquer valor alfanumérico no MS Excel, retornando corretamente os valores numéricos.

Lembrando que esta fórmula irá remover somente um conjunto numérico da célula.

2° Exemplo - Texto-Valor-Texto-Valor-Texto

Caso seja necessário remover dois valores separados de uma célula deverá utilizar esta técnica, que segue abaixo

Fórmula na Célula C3

=EXT.TEXTO(B3;CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN( INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0);0); LOCALIZAR(0;CONCAT(ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NÚM.CARACT(B3))) ;1)*1);0)); CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN( INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0);0)) -CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0);0))*1

ou em inglês

=MID(B3;MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1);0);0);SEARCH(0;CONCAT(INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1);0));MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1);0);0))-MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3) ));1)*1);0);0))*1

Fórmula na Célula D3

=EXT.TEXTO(B3;LOCALIZAR(1; CONCAT(ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN( INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0)); LOCALIZAR(0;CONCAT(ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0)); CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN( INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0);0))); AGREGAR(14;6; ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NÚM.CARACT(B3)));1)*1)*LIN(INDIRECT("1:"& NÚM.CARACT(B3)));1)-LOCALIZAR(1;CONCAT(ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0)); LOCALIZAR(0;CONCAT(ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN( INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0)); CORRESP(1;ÍNDICE( - - ÉNÚM(EXT.TEXTO(B3;LIN(INDIRETO("1:"& NÚM.CARACT(B3)));1)*1);0);0)))+1)*1

ou em inglês

=MID(B3;SEARCH(1;CONCAT(INDEX( - - ISNUMBER(MID(B3;ROW( INDIRECT("1:"& LEN(B3)));1)*1);0)); SEARCH(0;CONCAT(INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1);0));MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW( INDIRECT("1:"& LEN(B3)));1)*1);0);0))); AGGREGATE(14;6;ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1)*ROW(INDIRECT("1:"& LEN(B3)));1)-SEARCH(1;CONCAT(INDEX( - - ISNUMBER(MID(B3;ROW( INDIRECT("1:"& LEN(B3)));1)*1);0)); SEARCH(0;CONCAT(INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3)));1)*1);0));MATCH(1;INDEX( - - ISNUMBER(MID(B3;ROW(INDIRECT("1:"& LEN(B3) ));1)*1);0);0)))+1)*1

Neste método é necessário utilizar uma fórmula chamada CONCAT, que pertence ao novo MS Excel 2019/Office 365

Segue o exemplo funcionando de maneira dinâmica.

3° Exemplo: Como realizar a soma de células com caracteres numéricos e texto

O desafio da soma com caracteres de texto foi demonstrado pelo meu amigo Mestre Rodrigo Aiosa, sendo que deverá realizar a soma dos valores numéricos, segue o exemplo abaixo:

Fonte: Mestre Rodrigo Aiosa

Com os dados acima, nota-se um padrão, sendo o espaço que separa os valores numéricos dos valores de texto, com esta lógica definida foi possível realizar este desafio com a fórmula que segue abaixo,

Resposta na célula E2

=SOMA(ÍNDICE((ESQUERDA(ARRUMAR(A2:A20);LOCALIZAR(" ";ARRUMAR(A2:A20))-1))*1;0))

ou em inglês

=SUM(INDEX((LEFT(TRIM(A2:A20);SEARCH(" ";TRIM(A2:A20))-1))*1;0))

Segue o video da Live descrevendo passo a passo essas técnicas

4° Exemplo - Extração dos valores numéricos, independente da posição

Este desafio veio de uma pergunta do Gutemberg Silveira Alves

E a resposta é sim!

Segue o modelo acima conforme me comentou

Vamos a resposta! Segue abaixo.

=CONCAT(ÍNDICE(EXT.TEXTO(A2;AGREGAR(15;6;LIN(INDIRETO("1:"&NÚM.CARACT(A2)))/ÉNUM(EXT.TEXTO(A2;LIN(INDIRETO("1:"&NÚM.CARACT(A2)));1)*1);LIN(INDIRETO("1:"&SOMA(ÍNDICE(--ÉNUM(EXT.TEXTO(A2;LIN(INDIRETO("1:"&NÚM.CARACT(A2)));1)*1);0)))));1);0))*1

ou em inglês

=CONCAT(INDEX(MID(A2;AGGREGATE(15;6;ROW(INDIRECT("1:"&LEN(A2)))/ISNUMBER(MID(A2;ROW(INDIRECT("1:"&LEN(A2)));1)*1);ROW(INDIRECT("1:"&SUM(INDEX(--ISNUMBER(MID(A2;ROW(INDIRECT("1:"&LEN(A2)));1)*1);0)))));1);0))*1

E tem outra resposta do André Trevisan

=CONCAT(ÍNDICE(EXT.TEXTO(A2;LIN(INDIRETO("1:"&NÚM.CARACT(A2)));--ÉNUM(--EXT.TEXTO(A2;LIN(INDIRETO("1:"&NÚM.CARACT(A2)));1)));))

ou em inglês

=CONCAT(INDEX(MID(A2;ROW(INDIRECT("1:"&LEN(A2)));--ISNUMBER(--MID(A2;ROW(INDIRECT("1:"&LEN(A2)));1)));))

Espero que tenha gostado desse artigo!

Caso tenha alguma sugestão de outra técnica ou melhoria do conteúdo acima, poste aqui nos comentários.

Se gostou, curta e compartilhe este artigo para que todos saibam o que é possível fazer dentro do MS Excel.

E ja conhece o meu novo curso online de Excel?

Abraços a todos e até o próximo artigo!

Fabio BALDINI

Frase do Dia: "You Never Change things by fighting the existing reality. To Change someting, build a new model that makes the existing model obsolete. (Você nunca muda as coisas lutando contra a realidade existente. Para mudar alguma coisa, crie um novo modelo que torne obsoleto o modelo existente)" Autor: Buckminster fuller

44 Comentários


  1. Muito obrigado por compartilhar sua experiência. Se possível me tira uma dúvida sobre qual a funcionalidade na fórmula abaixo do (*1)

    =EXT.TEXTO(B3;4;4)*1

    Responder

    1. Olá Godofredo, formula ela serve para realizar uma extrair um pedaço de um texto, neste caso vai iniciar no 4° caracter e vai remover 4 caracteres, por isto a instrução 4, 4. Recomendo você realizar os nossos cursos, pois irá te ajudar e muito no entendimento correto das fórmulas, segue o link https://institutox.com.br/curso-online-de-excel/ Abraços

      Responder

    2. Só complementando o que o Mestre Baldini disse, o *1 significa que na extração deverá retornar um número, mas será entendido como texto, logo se utiliza deste artifício para “converter” o número de texto para “número propriamente dito”.

      Responder

      1. Isso mesmo Gutemberg, se você quiser o formato de Número deverá multiplicar por 1, mas se quiser deixar em texto, não será necessário essa multiplicação.

        Abração

        Responder

  2. Mestre Baldini,

    Muito obrigado pela resposta!!!

    Havia chegado até CORRESP(VERDADEIRO;ÉNÚM(1*EXT.TEXTO(DH4;LIN(INDIRETO(“1:”&NÚM.CARACT(DH4)));1));0), mas, não consegui progredir. Daí resolvi pedir sua ajuda. Qual foi a lógica utilizada para se chegar neste resultado, por gentileza, pois pegar e copiar é mole, mas, o entender, é que é o divisor de águas. Pode me explicar, por gentileza.

    Responder

    1. Recomendo Gutemberg fazer os meus cursos para você entender passo a passo, onde você poderá resolver não só este problema, mas qualquer outro problema que vier surgir. Abraços

      Responder

  3. Muito bom e completo!
    Uma pena que a “Fórmula na Célula C4” (e que na verdade seria D4) do 2º exemplo não funcionou, é justamente a que eu preciso.
    Mas de qualquer forma vou salvar esse post, é muito útil.

    Responder

    1. Opa é verdade Obrigado Tiago arrumei e mesmo assim não funcionou? Que versão do Excel você está utilizando? Abraços

      Responder

  4. Show. Muito ótima suas dicas, você é fera. Parabéns

    Abs. Carlos

    Responder

  5. Excelente artigo!

    Há uma forma de extrair os números de um texto que contém espaços?

    Caso de uso: eu tenho um endereço que está preenchido em uma única célula e preciso separar o número do logradouro. Por exemplo: “Avenida Brasil, 101”

    Indo mais além: E se o nome do logradouro realmente possuir um número? Por exemplo: “Rua 35, 1001” (é um exemplo real da cidade de Fortaleza)

    Responder

    1. Neste seu exemplo é mais facil primeiro separar os textos antes da virgula e depois da virgula, para depois fazer um tratamento no antes da virgula,

      Espero ter ajudado

      Responder

  6. Bom dia Fabio
    Tudo bem ?
    Tentei usar uma de suas fórmulas para extrair somente números dos exemplos abaixo, mas não deu certo. Imagino que pela quantidade de espaços e caracteres diferentes.
    Você consegue me ajudar com uma fórmula para extrair somente os números dos tipos de sequencia abaixo? Nesse caso ainda preciso separa o numero que esta dentro das barras e os dois algarismos (quando tiver) que estão entre a ultima barra e o traço.
    BX.REC.1 /6151/01-APHN LOJA CONCE
    BX.REC.1 /6151/02-APHN LOJA CONCE
    BX.PAG. /18052024/01-FLB – JOINVILLE
    PAG.ANTEC.ADT/70120-GERMANIA
    BX.PAG. /8/07-ASSOCIACAO PORT

    Responder

    1. Sim tente remover os espaços e depois utilizar as funções de remoção, como a SUBSTITUIR o espaço por nada,

      Abraços

      Responder

  7. Bom dia Professor,

    Estou a usar o office 2019 e a formula para devolver os números (=CONCAT(ÍNDICE(EXT.TEXTO(A2;AGREGAR(15;6;LIN(INDIRETO(“1:”&NÚM.CARACT(A2)))/ÉNUM(EXT.TEXTO(A2;LIN(INDIRETO(“1:”&NÚM.CARACT(A2)));1)*1);LIN(INDIRETO(“1:”&SOMA(ÍNDICE(–ÉNUM(EXT.TEXTO(A2;LIN(INDIRETO(“1:”&NÚM.CARACT(A2)));1)*1);0)))));1);0))*1) está a dar erro. Eu tenho uma coluna onde tenho a seguinte descrição : “Chapa Preta 2mm” e gostaria que ele devolve-se noutra célula o nº 2. O que poderá estar a correr mal?

    Cumprimentos

    Responder

    1. Acredito que seja o parenteses antes do igual, pois é obrigatório começar com o = e não o (

      Abraços

      Responder

  8. Olá

    Gostaria de compreender o “–” da função ÍNDICE(–

    Parabéns pelo conteúdo.

    Responder

    1. Olá Guilherme, quando você coloca o –, é a mesma coisa que multiplicar por -1 * -1, sendo que o Excel vai alterar de Verdadeiro e Falso para 0 e 1, para realizar as operações matematicas. Isso é ensinado no meu curso nível 2. Abraços

      Responder

  9. Baldini,

    No 2º exemplo não entendi como funciona a coluna D.

    Usei o exemplo e a coluna C funcionou perfeitamente, quando fui pra coluna D não consegui fazer funcionar.

    Responder

  10. Sensacional Fábio, uma lógica muito bem construída, parabéns

    Responder

  11. Oi Boa noite, fiquei com uma dúvida, porque você útilizou o “1:” na formula INDIRETO(“1:”

    Responder

    1. A função INDIRETO ela retorna o texto no intervalo do Excel, para fazer uma sequencia, onde nas novas funções no Excel poderia ser utilizado a função SEQUENCIA,

      Abraços,

      Responder

  12. bom dia Professor Fábio,

    Como realizado a separação do numero juntamente com textos, no entanto separando também o sinal tipo

    Texto-Sinal -Valor-Texto-Valor-Texto

    Responder

    1. Só multiplicar por -1, fazer o tratamento e retornar multiplicando por -1,

      Abraços,

      Responder

  13. Eu precisava utilizar essa formula para extrair somente os numeros de um CNPJ, exemplo: 01.234.567/0009-10, preciso somente dos números 01234567000910, ainda sim, eu preciso do numero do CNPJ raiz 01234567, porem ao extrair o cnpj raiz seria descartado o zero a esquerda, ficando 1234567 (01.234.567)

    Responder

    1. Olá Thiago, para fazer isso é mais simples só identificar os caracteres numericos, agrupar do maior para o menor e depois reagrupar,

      Espero ter ajudado, Abraços

      Responder

  14. Fabio Bom dia,

    Não estou consehuindo extrair dois numeros separadamente, pois la diz insira a formula da C3 e a outra formula na C4, porem no mini video tem a coluna D, poderia me expicar por favor

    Responder

  15. Bom dia Fábio,

    Consegue me ajudar ? Eu tenho essas possíveis variáveis nos cadastros:

    321VZ – Peso 325121
    7864VZ – ZAVORR3536737M2
    636VZ – 87650521 Weight

    Eu preciso extrair apenas 4 números, no caso do primeiro exemplo 5121, no segundo 6737 e no terceiro 0521.

    Responder

    1. Olá Tomás tudo bom, desculpe a demora da resposta, mas segue
      =IF(AVERAGE(SORT(LARGE(ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))*SEQUENCE(LEN(A1));SEQUENCE(4));1;1))=((LARGE(ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))*SEQUENCE(LEN(A1));4)+3+LARGE(ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))*SEQUENCE(LEN(A1));4))/2);CONCAT(INDEX(MID(A1;SEQUENCE(LEN(A1));1);SORT(LARGE(ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))*SEQUENCE(LEN(A1));SEQUENCE(4));1;1);0));CONCAT(INDEX(MID(A1;SEQUENCE(LEN(A1));1);SORT(LARGE(IF(ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))*SEQUENCE(LEN(A1))>=MAX(ABS(ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))-1)*SEQUENCE(LEN(A1)));0;ISNUMBER((–MID(A1;SEQUENCE(LEN(A1));1)))*SEQUENCE(LEN(A1)));SEQUENCE(4));1;1);0)))

      Espero ter ajudado, Abraços!
      Prof. Baldini

      Responder

  16. Olá Fábio.
    Admiro muito pessoas com conhecimento, mais ainda as que de forma benevolente – compartilham o saber – é de enorme grandeza, espero que um dia essa seja uma das realidades que absorvem as obsoletas e mesquinhas do ego. Parabenizo você. Em tempo ajudou-me muito. Abraço.

    Responder

  17. Agradeço muito, estava procurando sem sucesso ate o momento, uma formula para extração de números, so localizava funções vba e atalhos, muito obrigado pelo compartilhamento desse conhecimento de grande ajuda!

    Responder

  18. Validação se o cliente é MEI ou não pela Razão Social. Não é 100%, mas ajuda muito.

    =SEERRO(SE(NÚM.CARACT(EXT.TEXTO(B2;(NÚM.CARACT(B2)-11);NÚM.CARACT(B2)-11)*1)>=8;”MEI”;””);””)

    Dá pra melhorar e validar o CPF no fim da razão, mas desse jeito o ajudou bastante.
    A parte do SE onde valida a quantidade de cárceres pode variar. Acredito que vale apena tratar e colocar um validador de CPF.

    Responder

  19. Olá Fábio, tudo bem?
    Estou ha um tempinho tentando resolver um caso no excel, mas sem sucesso, e já busquei no google, chatgpt e não achei.
    Você saberia ajudar por favor?

    Tenho uma coluna com dados não padronizados, onde contém letras, números, caracteres especiais, letras maísculas e minúsculas.
    Preciso identificar a volumetria dos casos em que há letras em minúsculas.
    Exemplo:
    1) Part number = aXpQ12@ Resultado esperado de uma formula é “Sim”
    2) Part number = AXPQ12@ Resultado esperado de uma formula é “Não”

    Obrigada

    Responder

    1. Olá Cássia, você pode utilizar outras funções como PROCURAR para resolver o seu problema,

      Espero ter ajudado,

      Abraços

      Prof. Baldini

      Responder

  20. Como extrair uma sequencia de números em meio a um texto? Por exemplo: “Há 14 itens de código 234568 sobrando no setor”.
    Como extrair apenas os 6 números do código?

    Responder

    1. Olá Laercio, você pode utilizar o 2° Exemplo onde é possível extrair a 2 parte onde tem somente números, mas com a nova versão do Excel você pode colocar esse valor ao lado e em baixo apertar Ctrl+E que o Excel irá trazer todas as respostas que você precisa.

      Espero ter ajudado,

      Abraços

      Prof. Baldini

      Responder

  21. Oi Fábio,

    Consegue me ajudar ?
    Preciso extrair da célula apenas sequências numericas com 6 ou mais carcteres. Os dados da células não possuem um padrão definido, algumas vezes nem apresentam a chave númerica.
    Exemplo:
    25V-TV-552980-CSJA-25X-BRBR3
    TO PMW_775-WTV-98530061
    BVB-IP-001/11QCE12X#1
    107702-AC-BVB_159-WWF_BR
    IP-001/11QCE12X_RRO_4230777_SREJPA4606P-532598 SS

    O retorno seria:
    552980
    98530061
    “Sem chave númerica”
    107702
    4230777 e 532598

    Responder

    1. Olá Julio tudo bom, agora nas novas versões do Excel você pode utilizar a função com IA do Excel que é o Ctrl+E onde ele vai identificar o padrão que você quer extrair os seus dados e irá te ajudar nessa extração.

      Espero ter ajudado,

      Prof. Baldini

      Responder

Deixe um comentário

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