Microsoft Excel Algoritmo do CNPJ e CPF
Algoritmo do CNPJ Uma rotina muito utilizada por programadores em softwares comerciais é a validação do Cadastro Nacional de Pessoa Jurídica (CNPJ). Muitos pegam esta rotina pronta da Internet, milhares de sites oferecem nas mais diversas linguagens de programação. Ao invés de você confiar seu software a estas rotinas que tal você mesmo desenvolver a sua tendo certeza que a mesma esta certa e funcionando perfeitamente. O algoritmo apresentado a seguir segue as regras do Ministério da Fazenda para você mesmo fazer seu calculo e ter certeza de que o mesmo funcionará corretamente. Entendendo o CNPJ O número que compõe o CNPJ é composto por três segmentos de algarismos, sendo o primeiro o número da inscrição propriamente dito, o segundo após a barra o número de filiais e o terceiro representado pelos últimos dois valores que são dígitos verificadores. Oficialmente o cálculo do número do CNPJ prevê também a verificação do oitavo digito, mas algumas empresas possuem números que ao serem validados segundo esse critério são considerados inválidos. Por isso o mais seguro é você fazer a validação dos dígitos verificadores, pois assim nenhum número será invalidado e sua rotina está protegida da mesma forma, já que a regra é única e funciona com qualquer CNPJ válido. Validando os dígitos verificadores Vamos mostrar o cálculo de modo prático, para isso vamos adotar um número de CNPJ hipotético e calcularemos seus dígitos verificadores: 33.555.333/0001-xx. Vamos começar alinhando os números que compõe o CNPJ com os algarismos 5,4,3,2,9,8,7,6,5,4,3 e 2 nesta ordem, veja: 3 3 5 5 5 3 3 3 0 0 0 1 5 4 3 2 9 8 7 6 5 4 3 2 Feito isso efetuaremos a multiplicação de cada uma das colunas, assim: 3 3 5 5 5 3 3 3 0 0 0 1 5 4 3 2 9 8 7 6 5 4 3 2 15 12 15 10 45 24 21 18 0 0 0 2 Com os valores encontrados em cada uma das colunas efetuaremos o somatório, desta forma: 15+12+15+10+45+24+21+18+0+0+0+2 = 162. Agora realizaremos a divisão por 11 ( 162 / 11) = 15 com resto 8 Vamos considerar como cociente somente o valor inteiro, o resto da divisão será responsável pelo calculo do primeiro digito verificador. Assim sendo no nosso caso o resto da divisão é o número 8. Página 2 de 9
Neste momento temos a seguinte regra: Excel cálculo CNPJ e CPF Caso o resto da divisão seja menor que 2 (dois), o valor do digito verificador passa a ser 0 (zero), caso contrário, subtrairmos o valor de 11 para obter o digito, que é o primeiro digito verificador (11-8) = 3. Para seguirmos com a nossa validação tomaremos o CNPJ com o primeiro digito já calculado. Para efetuarmos a validação do segundo e ultimo digito verificador: 33.555.333/0001-3x O processo é semelhante à primeira etapa, a mudança é a seqüência de números que serão alinhados na tabela. Como a tabela ficou maior com a presença do digito já calculado a seqüência agora tem que ter mais um número e ficará assim: 6,5,4,3,2,9,8,7,6,5,4,3 e 2, confira: 3 3 5 5 5 3 3 3 0 0 0 1 3 6 5 4 3 2 9 8 7 6 5 4 3 2 Agora vamos efetuar a multiplicação das colunas, como na primeira etapa. 3 3 5 5 5 3 3 3 0 0 0 1 3 6 5 4 3 2 9 8 7 6 5 4 3 2 18 15 20 15 10 27 24 21 0 0 0 3 6 Faremos agora a somatória dos resultados obtidos: 18+15+20+15+10+27+24+21+0+0+0+3+6 = 159 Como o resultado obtido, efetuamos a divisão por 11. (159/11) = 14 com resto 5. Nessa divisão, assim como no cálculo anterior, vamos apenas considerar o valor inteiro do quociente, pois o calculo do ultimo digito verificador será feito com o resto da divisão seguindo a seguinte regra: caso o resto da divisão seja menor que 2 (dois), esse valor passa a ser automaticamente a ser 0 (zero), caso contrário, subtrai-se o resto de 11 para obter o valor do ultimo digito verificador. No nosso exemplo (11-5) = 6. O nosso CNPJ agora está completo 33.555.333/0001-36 Anotações: Página 3 de 9
Funções do Excel Excel cálculo CNPJ e CPF Função =SE( ) Tem a finalidade de conduzir testes condicionais sobre valores e fórmulas, e assim retornar um valor lógico verdadeiro ou falso de acordo com a análise da condição especificada. É possível trabalhar com até sete funções =SE encadeadas. Operadores de Comparação Os operadores de comparação, quando utilizados em fórmulas e funções, produzirão resultado de verdadeiro ou falso. Sintaxe: =SE(teste_lógico;valor_verdadeiro;valor_falso) Função =MOD( ) Retorna o resto da divisão após um número ter sido dividido por um divisor. Sintaxe: =MOD(Num;Divisor) Onde: Num é o número da divisão cujo resto da divisão você deseja localizar; Divisor é o número divisor. Função =EXT.TEXTO( ) Retorna os caracteres do meio de uma seqüência de caracteres de texto, tendo a posição e o comprimento especificados. Sintaxe: =EXT.TEXTO(Texto;Num Inicial;Num caractere) Onde: Texto é a seqüência de caracteres ou a célula que contem os caracteres que se deseja extrair. Num inicial é a posição inicial da seqüência de caracteres; Num caractere é o número de caracteres que se deseja extrair. Anotações: Página 4 de 9
Exemplo na Planilha Excel cálculo CNPJ e CPF =EXT.TEXTO(B4;1;1) 33.555.333/0001 =EXT.TEXTO(B4;4;1) 33.555.333/0001 =C6*C7 =D6*D7 =SOMA(C8:N8) Página 5 de 9
=O9/11 =MOD(O9;11) =SE(O11<2;0;11-O11) Se o resto da divisão for menor que 2 (dois), o valor do digito verificador passa a ser 0 (zero), senão, subtrairmos 11 do resto para obter o digito. Página 6 de 9
Anotações: Página 7 de 9
Algoritmo do CPF O CPF é composto por onze algarismos, onde os dois últimos são chamados de dígitos verificadores, ou seja, os dois últimos dígitos são criados a partir dos nove primeiros. O cálculo é feito em duas etapas utilizando o módulo de divisão 11. Para exemplificar melhor iremos calcular os dígitos verificadores de um CPF hipotético, por exemplo, 555.444.222-XX. Calculando o Primeiro Dígito Verificador (CPF) O primeiro dígito é calculado com a distribuição dos dígitos colocando-se os valores 10,9,8,7,6,5,4,3,2 conforme a representação abaixo: 5 5 5 4 4 4 2 2 2 10 9 8 7 6 5 4 3 2 Na seqüência multiplicaremos os valores de cada coluna, confira: 5 5 5 4 4 4 2 2 2 10 9 8 7 6 5 4 3 2 50 45 40 28 24 20 8 6 4 Em seguida efetuaremos o somatório dos resultados (50+45+40+28+24+20+8+6+4), o resultado obtido (225) será divido por 11. Considere como quociente apenas o valor inteiro, o resto da divisão será responsável pelo cálculo do primeiro dígito verificador. Vamos acompanhar: 225 dividido por 11 obtemos 20 de quociente e 5 de resto da divisão. Caso o resto da divisão seja menor que 2, o nosso primeiro dígito verificador se torna 0 (zero), caso contrário subtrai-se o valor obtido de 11, que é nosso caso, sendo assim nosso dígito verificador é 11-5, ou seja, 6 (seis), já temos parte do CPF, confira: 555.444.222-6X. Calculando o Segundo Dígito Verificador (CPF) Para o cálculo do segundo dígito será usado o primeiro dígito verificador já calculado. Montaremos uma tabela semelhante a anterior só que desta vez usaremos na segunda linha os valores 11,10,9,8,7,6,5,4,3,2 já que estamos incorporando mais um algarismo para esse cálculo. Veja: Na próxima etapa faremos como na situação do cálculo do primeiro dígito verificador, multiplicaremos os valores de cada coluna e efetuaremos o somatório dos resultados obtidos: 55+50+45+32+28+24+10+8+6+12=270. Página 8 de 9
Agora pegamos esse valor e dividimos por 11. Considere novamente apenas o valor inteiro do quociente, e com o resto da divisão, no nosso caso 1, usaremos para o cálculo do segundo dígito verificador, assim como na primeira parte. 270 / 11 = 25 ; resto = 6 Caso o valor do resto da divisão seja menor que 2, esse valor passa automaticamente a ser zero, caso contrário é necessário subtrair o valor obtido de 11 para se obter o dígito verificador. Neste caso chegamos ao final dos cálculos e descobrimos que os dígitos verificadores do nosso CPF hipotético são os números 6 e 5, portanto o CPF ficaria assim: 555.444.222.-65. Anotações: Página 9 de 9