Ir ao conteúdo
  • Cadastre-se

Excel @ macro correção de telefone


Posts recomendados

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!

 

Link para o comentário
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

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...