Ir ao conteúdo
  • Cadastre-se
Bruno Tardivo

Excel @ macro correção de telefone

Recommended Posts

Pessoal,

Dei uma pesquisada geral e não encontrei nada que tenha me ajudado. Preciso de uma macro que corrija uma base de telefones nos mais variados formatos... 

 

Por exemplo:

Em determinada planilha, tenho 20.000 telefones com formatações tipo "021 9999.9999", "021/99999999", "219999-9999", "(21)99999999", etc. E tem também os telefones SEM o DDD.

 

E eu precisava que os caracteres seguissem uma formatação padrão. Poderia ser: "2199999999" ou "(21) 9999-9999" 

 

===============================================

 

Então, a macro precisaria:

 

- remover o ZERO a esquerda do primeiro número, quando houvesse;

- remover caracteres do tipo "/", "-", ".", ";", ",";

- descartar células com contagem de caracteres entre 9 ou menos dígitos;

- arrumar conforme exemplo "2199999999" ou "(21) 9999-9999"

 

É possível? Será que tem como fazer no Excel?

 

Desde já, obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Bruno Tardivo seja bem vindo ao forum!.

Acredito que esses numeros sejam antigos pois os atuais possuem o prefixo 9_ ou seja 9 digitos.

Segue opção de udf que remove caracteres.

Faça uma analise na sua lista de numeros para ver se possuem algum caracter nao citado acima.

Caso o numero de digitos seja < (menor) que 10 a função retornará como: " " (vazio)

Utilize desta forma na sua planilha.  Ex.: =SE(A2<>"";Remove_Cararc(A2);"")

Cole o codigo abaixo em um modulo padrão.

Const SpecialCharacters As String = "/,-,.,;"
Function Remove_Cararc(rng As Range) As String
    Dim myString As String
    Dim newString As String
    Dim char As Variant

    myString = rng
    newString = myString

    For Each char In VBA.Split(SpecialCharacters, ",")
        newString = VBA.Replace(newString, char, " ")
    Next

    newString = VBA.Replace(VBA.Replace(newString, " ", ""), ",", "")

    If VBA.Len(newString) < 10 Then Remove_Cararc = Empty: Exit Function
    Remove_Cararc = VBA.IIf(VBA.Left(newString, 1) = 0, VBA.Right(newString, VBA.Len(newString) - 1), newString)

End Function

 

Editado por Basole
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×