jun 22 2008

Validador de CPF no Excel

  • Autor: admin em Tutorial
  • 8 Comentários
Para verificar um número de CPF, podemos utilizar um cálculo para determinar os dois últimos dígitos do CPF a partir dos 9 primeiros dígitos. Isso ajuda a evitar que alguém use um número de CPF falso ou inventado. A probabilidade de acertar nesses casos é de um para cem, já que existem cem possibilidades (de 00 a 99) para o valor dos dois últimos dígitos. Nada é perfeito =D

O cálculo é baseado na soma dos dígitos do CPF (previamente multiplicados por pesos, diferentes para cada dígito) e no resto da divisão por 11 dessas somas. Neste exemplo usamos o VBA(criador de macros), que pode ser utilizado como função de planilha.

Option Explicit

Public Function TestaCPF(CPF As String) As String

Dim intD1 As Integer ‘armazena 1º dígito
Dim intD2 As Integer ‘armazena 2º dígito
Dim intD3 As Integer ‘armazena 3º dígito
Dim intD4 As Integer ‘armazena 4º dígito
Dim intD5 As Integer ‘armazena 5º dígito
Dim intD6 As Integer ‘armazena 6º dígito
Dim intD7 As Integer ‘armazena 7º dígito
Dim intD8 As Integer ‘armazena 8º dígito
Dim intD9 As Integer ‘armazena 9º dígito
Dim intD10 As Integer ‘armazena 10º dígito
Dim intD11 As Integer ‘armazena 11º dígito
Dim intSoma1 As Integer ‘armazena valor utilizado durante o cálculo dos dígitos verificadores
Dim intSoma2 As Integer ‘armazena valor utilizado durante o cálculo dos dígitos verificadores
Dim intResto1 As Integer ‘armazena valor utilizado durante o cálculo dos dígitos verificadores
Dim intResto2 As Integer ‘armazena valor utilizado durante o cálculo dos dígitos verificadores
Dim intDigVer1 As Integer ‘armazena o 1º dígito verificador calculado pela função
Dim intDigVer2 As Integer ‘armazena o 2º dígito verificador calculado pela função

If Not IsNull(CPF) Then

intD1 = Mid(CPF, 1, 1) ‘1º dígito = 1º caractere à esquerda do cpf
intD2 = Mid(CPF, 2, 1) ‘2º dígito = 2º caractere à esquerda do cpf
intD3 = Mid(CPF, 3, 1) ‘3º dígito = 3º caractere à esquerda do cpf
intD4 = Mid(CPF, 5, 1) ‘4º dígito = 5º caractere à esquerda do cpf
intD5 = Mid(CPF, 6, 1) ‘5º dígito = 6º caractere à esquerda do cpf
intD6 = Mid(CPF, 7, 1) ‘6º dígito = 7º caractere à esquerda do cpf
intD7 = Mid(CPF, 9, 1) ‘7º dígito = 9º caractere à esquerda do cpf
intD8 = Mid(CPF, 10, 1) ‘8º dígito = 10º caractere à esquerda do cpf
intD9 = Mid(CPF, 11, 1) ‘9º dígito = 11º caractere à esquerda do cpf
intD10 = Mid(CPF, 13, 1) ’10º dígito = 13º caractere à esquerda do cpf
intD11 = Mid(CPF, 14, 1) ’11º dígito = 14º caractere à esquerda do cpf

‘intSoma1 armazena resultado de cálculo com os 9 primeiros dígitos do CPF
intSoma1 = intD1 * 10 + intD2 * 9 + intD3 * 8 + intD4 * 7 + intD5 * 6 + intD6 * 5 + intD7 * 4 + intD8 * 3 + intD9 * 2

‘intResto1 armazena valor do resto da divisão de intSoma1 por 11
intResto1 = intSoma1 Mod 11

‘se o resto da divisão for menor ou igual a um, o primeiro dígito verificador é igual a zero
If intResto1 <= 1 Then
intDigVer1 = 0
‘caso contrário, o dígito verificador é igual a 11 menos o valor de intResto1
Else
intDigVer1 = 11 – intResto1
End If

‘intSoma1 armazena resultado do cálculo com os 9 primeiros dígitos do CPF e o primeiro dígito verificador
intSoma2 = intD1 * 11 + intD2 * 10 + intD3 * 9 + intD4 * 8 + intD5 * 7 + intD6 * 6 + intD7 * 5 + intD8 * 4 + intD9 * 3 + intDigVer1 * 2

‘intResto1 armazena valor do resto da divisão de intSoma1 por 11
intResto2 = intSoma2 Mod 11

‘se o resto da divisão for menor ou igual a um, o segundo dígito verificador é igual a zero
If intResto2 <= 1 Then
intDigVer2 = 0
‘caso contrário, o dígito verificador é igual a 11 menos o valor de intResto2
Else
intDigVer2 = 11 – intResto2
End If

‘se o 1º dígito verificador calculado for diferente do 10º dígito do CPF testado
‘OU se o 2º dígito verificador calculado for diferente do 11º dígito do CPF testado
‘a função retorna “Inválido”
If intDigVer1 <> intD10 Or intDigVer2 <> intD11 Then
TestaCPF = “Inválido”
‘a função retorna “Válido”
Else
TestaCPF = “Válido”
End If

End If

End Function



8 Comentários:

Trackbacks

  1. Websites tagged "validador" on Postsaver escreveu:
    […] – Revalidação do RioCard vai até as 17h desta sexta-feira saved by hotstuff9092008-12-15 – Validador de CPF no Excel saved by zombiesnrobots2008-12-14 – NAP CON DHCP a Pasito saved by narutoluver9992008-12-11 – la […]
    dezembro 28th, 2008 às 9:32 pm
  1. ROSEMERE FERREIRA DA SILVA diz:
    EU QUERO SABE SE O MEU CPF ESTA CADASTRADO
    fevereiro 6th, 2009 às 5:38 pm
  2. ROSEMERE FERREIRA DA SILVA diz:
    CADASTRAMENTO DE CPF
    fevereiro 6th, 2009 às 5:40 pm
  3. ROSEMERE FERREIRA DA SILVA diz:
    CADASTRAMENTO DO CPF
    fevereiro 6th, 2009 às 5:41 pm
  4. Luisa diz:
    não axei ese saite imteresante! i nãum axei meu ce.pe.efe!
    julho 16th, 2009 às 5:32 pm
  5. admin diz:
    Se pelo menos você soubesse escrever corretamente, encontraria assuntos relacionados ao que procura no google ;]
    julho 16th, 2009 às 6:39 pm
  6. Vinicius diz:
    Olá!
    Acredito que encontrei o que procurava, porém como não sou bom entendedor desta (incrivel) ferramenta que é o Excel precisarei de sua ajuda.
    É possivel que voce me encaminhe a planilha já pronta? Pois não compreendi como devo cria-la.

    Desde já agradeço.

    outubro 5th, 2009 às 5:59 am
  7. Tiago diz:
    Nesse blog tem um ótimo algoritmo de validação de CPF.

    http://casadophp.blogspot.com/2009/11/algoritmo-para-validar-cpf.html

    novembro 7th, 2009 às 3:37 pm

DEIXE UM COMENTÁRIO

Subscrever

Subscreve o Blog



Publicidade

Comentários Recentes

  • Jefferson Ferreira de brito: eu quero muito
  • thiago valente: Eu quero um para mim
  • Lucas martins balieiro: Eu não fiz o enem mesmo assim eu posso me inscrever no site essa é minha dúvida, só queme...
  • Francisca Marli Oliveira: quero saber quanto tenho no meu fgts
  • Santiago ribeiro de oliveira: Eu tô com carteira registrada eu tenho direito

Links

Leitores Recentes

VALE O CLIQUE!

Site Seguro Ocioso

Divulgue o blog Infomaroto em seu site e tenha seu link ou banner aqui.
Blog Infomaroto