120 Lições | Gratuito Online | Autor: Júlio Battisti
Nessa e nas próximas duas lições, veremos o uso do VBA para solucionar um exemplo prático. Vamos criar uma função personalizada, chamada ValidaCPF. Em seguida usaremos essa função para fazer o cálculo do Dígito Verificador de um conjunto de CPFs:
Importante: O algoritmo de cálculo do DV de CPFs e CNPJs é de domínio público, já tendo sido publicado no diário oficial da união e em diversas revistas de informática, de circulação nacional.
Nessa lição explicarei como funciona o cálculo do DV do CPF.
Para entender o algoritmo de cálculo do CPF vamos utilizar um exemplo prático.
Considere o seguinte CPF (sem o DV):
333.444.555
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
Número | 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 |
Começamos a multiplicar os dígitos do CPF, a partir da posição 9, ou seja, de trás para frente, por 2, 3, 4, 5 e assim por diante, conforme indicado na tabela a seguir:
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
Número | 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 |
Multiplica | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Resultado | 30 | 27 | 24 | 28 | 24 | 20 | 20 | 15 | 10 |
Somo os resultados obtidos na quarta linha da tabela anterior:
Soma1 = 30+27+24+28+24+20+20+15+10
Soma1 = 198
Faço a divisão desta soma por 11 e determino o resto da divisão:
198/11
Que resulta em uma divisão exata, com resto 0
Regra: Quando o resto é 0 ou 1, o DV é 0.
Quando o resto é diferente de 0 ou 1, o DV é obtido subtraindo: 11-resto
Neste caso como o resto foi zero, o primeiro DV é zero:
DV1=0
O DV1 calculado passa a fazer parte do CPF, conforme indicado pela tabela a seguir:
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Número | 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 | 0 |
Agora repetimos o processo anterior, porém já considerando o DV1 como parte integrante do CPF, conforme indicado pela tabela a seguir:
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Número | 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 | 0 |
Multiplica | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Resultado | 33 | 30 | 27 | 32 | 28 | 24 | 25 | 20 | 15 | 0 |
Somo os resultados obtidos na quarta linha da tabela anterior:
Soma2 = 33+30+27+32+28+24+25+20+15+0
Soma1 = 234
Faço a divisão desta soma por 11 e determino o resto da divisão:
234/11
que resulta em (21), com resto 3.
Regra: Quando o resto é 0 ou 1, o DV é 0.
Quando o resto é diferente de 0 ou 1, o DV é obtido subtraindo: 11-resto
Neste caso como o resto foi 3, o segundo DV é:
DV2 = 11 - 3
DV2 = 8
Com isso o CPF, já com os dois DVs fica conforme indicado na tabela a seguir:
Posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
Número | 3 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 | 0 | 8 |
Ou seja, o CPF final é:
333.444.555-08
Os algoritmos para cálculo dos DVs do CNPJ são praticamente iguais. A única diferença é a quantidade de dígitos do CNPJ é diferente do CPF.
VOCÊ CONHECE A UNIVERSIDADE DO EXCEL? |
UNIVERSIDADE PRÁTICA DO EXCEL - Domine o Excel, do Básico até a Criação de Planilhas Profissionais com Excel e VBA! Aplica-se ao Excel 2019, 2016, 2013 e 2010! |
22 Cursos - 925 Vídeo-Aulas - 120:42 horas - Só R$ 97,00 |
Para Todos os Detalhes, Acesse: |