Função para extrair números de células

Texto em colunas no Excel com VBA
Texto em colunas no Excel com VBA
26 de setembro de 2010
Conciliação de Dados com Excel - Vídeo
Conciliação de Dados com Excel – Vídeo
27 de setembro de 2010

Objetivo: Apresentar uma função criada para extrair somente números de células que contenham dados mistos, como por exemplo em históricos contábeis.

 

Um problema que a leitora Mônica S.P. me enviou por e-mail, foi a dificuldade de realizar a conciliação de dados utilizando a base que ela tinha, que possuia dados mistos, aos quais não havia a possibilidade de separar em colunas, isto é típico de históricos contábeis, principalmente lançamentos manuais.

Desta forma criei uma função que realiza a extração dos números de células utilizando o VBA abaixo:

'
'Esta função tem por objetivo retirar números de células que contenham conteúdos mistos de números e texto
'sem a possibilidade de serem colunados
Public Function lfRetiraNumeros(ByVal vValor As String) As String
    'Atualiza o cálculo automaticamente
    Application.Volatile
    
    'Conta a quantidade de caracteres
    Dim vQtdeCaract As Long
    Dim vControle   As Boolean
    
    vQtdeCaract = Len(vValor)
    vControle = False
    
    'Para cada caractere identifica se é número ou texto
    For i = 1 To vQtdeCaract
        'Se for número adiciona no retorno da função
        If IsNumeric(Mid(vValor, i, 1)) Then
            If vControle = True And lfRetiraNumeros  vbNullString Then
                lfRetiraNumeros = lfRetiraNumeros + " "
            End If
            vControle = False
            lfRetiraNumeros = lfRetiraNumeros & Mid(vValor, i, 1)
        Else
            vControle = True
        End If
    Next
    
    'Substitui espaços em branco por / e tira espaços em branco no final do retorno da função
    lfRetiraNumeros = Replace(Trim(lfRetiraNumeros), " ", "/")

End Function

 

Para utilizar esta macro você pode usar direto nesta planilha disponibilizada ou ainda colocá-la nas suas funções globais, conforme o artigo: http://guiadoexcel.com.br/criando-funcoes-proprias-globais#more-141.

E depois para utilizá-la basta digitar =lfRetiraNumeros(B2) e substituir o B2 pelo endereço da célula ou texto que desejar.

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

19 Comentários

  1. Kruger disse:

    Olá Rieper,

    Idéia para um Post: Imagine que vc tenha a ou mais listas importadas no Excel e que tenha que criar uma outra contendo somente as celulas de forma distinta…

    Ex:
    Joao
    Maria
    Joao
    Pedro …

    Note que repete “Joao”…
    Isto pode ser feito com funções do Excel “Remover duplicados…” mais que tal em VBA?

    • Marcos Rieper disse:

      Olá Ivan, obrigado pela idéia,

      Mas que tal, ao invés de eu fazer remover os duplicados, deixar apenas os que constam duplicados e ainda a quantidade de vezes que eles se duplicam, já que como você disse já tem o Remover duplicados no VBA.

      Ah, estou esperando o banner =D, hehehe.

      Um abraço.

      Rieper

      Rieper

  2. Carlos disse:

    Bom dia…

    Eu preciso usar esta função para extrair os números na célula, mas a célula “nova” não fica com o valor capturado e sim com a fórmula. Existe algo que possa ser incrementado para transformar a célula no valor capturado?

    Agradeço se puder ajudar e parabéns pela iniciativa de ajudar.

    Carlos

  3. Dica foi muito útil! Valeu!
    Abraço

  4. Ersan disse:

    Cara, muito bom. Parabéns e obrigado por disponibilizar essas informações.

  5. Marcelo disse:

    Parabéns, ótima solução me ajudou muito

  6. marcelors disse:

    Olá!
    Preciso de que seja elaborado uma plnilha que faça o seguinte,”Sempre que for idêntica a A1 selecionar Três linhas abaixo” essa seleção deveria ocorrer simultaneamente, ou seja, (automática)
    Se o valor da célula for igual a A1, no caso 2, copiar o valor da terceira célula abaixo, de forma automática, ou seja, (simultânea) e Copiar para a coluna do lado.
    Se for idêntica a A1 selecionar Três linhas abaixo.
    Se for idêntica a A1 selecionar a terceira célula abaixo.
    Obs.Essa localização deve ocorrer de forma simultânea, ou seja, (automática).
    A
    2
    31
    32
    68
    2
    97
    54
    79
    2
    45
    69
    75
    2
    57
    26
    2
    2
    15
    17
    18
    2
    2
    31
    32
    68
    2
    97
    54
    79
    2
    45
    69
    75

    O valor de A1 é 2.
    Sendo assim, eu quero 3 linhas abaixo de A1, o retorno seria 68

    A5 também é 2, sendo assim, o retorno seria 79.

    A9 = 2, então retorno = 75.
    1) Preciso que a Planilha ou Fórmula fosse flexível para escolher outra sequência pois nem sempre seria três linhas abaixo. Obs. Pois poderia ser. Uma linha abaixo, Duas linha abaixo , Três linha abaixo , Quatro linhas abaixo, Cinco linhas abaixo, Seis linha abaixo, Sete linhas abaixo, Oito linhas abaixo, Nove linhas abaixo e assim sucessivamente.
    Tabém nem a procura seria feita através da celula A1, A2, A3 , A4, A5, A6, A7 e assim sucessivamente.

    Desde já agradeço pela atenção dada aguardo resposta.
    Atenciosamente.
    Marcelo R de Santana.

    • Marcos Rieper disse:

      Boa noite Marcelo,

      A sua dúvida demoraria um pouquinho para ser criada, não pode ser respondida rapidamente.

      Infelizmente no momento não estamos realizando trabalho de consultoria por uma questão de tempo, mas posso te indicar empresas que possam auxiliá-lo.

      Abraço

      Marcos Rieper

  7. Rafael disse:

    Excelente! Funcionou perfeitamente, só tive adicionar uma outra variável no final para retirar os espaços em branco pois não estava fazendo. mas ficou TOP!

  8. Edson Marcos disse:

    Boa tarde Marcos, eu me chamo Edson Marcos e estou com uma duvida, preciso criar uma macro que me posibilite puxar os contatos com telefone do face pro excel, vc poderia me ajudar…..

  9. RODRIGO AMALFI PEREIRA disse:

    Marcos, boa tarde. Preciso de uma ajuda. Estou tentando criar um VBA que extraia o numero de telefone de um texto que tem muitas informações. Na maioria dos casos os telefones estão neste formato “(xx) xxxx-xxxx”, ou quando celular com um número a mais. Em outros casos ele está após a descrição Celular ou Telefone. Qual seria a forma mais fácil de fazer isso?

  10. Regis disse:

    Excelente material.
    Serviu perfeitamente para o que eu necessitava.

    Abç

  11. Rafael disse:

    Boa tarde,

    preciso de uma formula que exclua alfanumerico da minha coluna que tbm é composta por numeros.

    exp:

    Atual O que eu preciso
    992 992
    992 992
    CD02
    999 999
    CD02
    984 984
    CD02
    1007 1007
    992 992
    999 999
    999 999
    1007 1007

    Grato!

  12. Eliseu Albuquerque disse:

    Olá, Marcos. Bom dia. Tudo bem? Primeiramente parabéns pelo conteúdo e obrigado por compartilhar seus conhecimentos. Eles nos ajudam muito no dia a dia. Tenho um probleminha aqui com a substituição do caracter “/”, pelo carater “.”.

    Quando rodo o código:
    Range(“a7:a1048576”).Select
    Selection.replace “/”, “.”

    ao invés de substiruir por ponto “.”, substitui por “,” virgula.

    Como estou usando os dados em um procv, acaba não dando certo.

    Poderia, por favor, me ajudar com esse assunto?

  13. Samuel Rocha disse:

    Show de Bola Marcos Rieper, o VBA funciona bem demaaaaais!
    Obrigado.

Deixe uma resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.