quinta-feira, março 16, 2017

Fórmula Macarrônica de Cálculo do CPF Libre Office ou Excel

Criei esta fórmula macarrônica para cálculo do CPF. Criei no Calc do Libre Office, porque não tenho excel, mas acho que funcionaria também :)

Considerando que o CPF sem os dois dígitos do DV está na célula A1, colar na B1 a seguinte fórmula:
=CONCATENAR(
SE(MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*3)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*2)
;11)<2; 
0; 
11-MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*3)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*2);11)) ;  

SE(MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*11)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*3+  
SE(MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*3)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*2)
;11)<2; 
0; 
11-MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*3)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*2)
;11))*2  )
;11)<2; 
0; 11-MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*11)
+(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*10)
+(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*9)
+(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*8)
+(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*7)
+(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*6)
+(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*5)
+(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*4)
+(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*3+  
SE(MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*3)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*2)
;11)<2; 
0; 
11-MOD((EXT.TEXTO(TEXTO(A1;"000000000");1;1)*10)+
(EXT.TEXTO(TEXTO(A1;"000000000");2;1)*9)+
(EXT.TEXTO(TEXTO(A1;"000000000");3;1)*8)+
(EXT.TEXTO(TEXTO(A1;"000000000");4;1)*7)+
(EXT.TEXTO(TEXTO(A1;"000000000");5;1)*6)+
(EXT.TEXTO(TEXTO(A1;"000000000");6;1)*5)+
(EXT.TEXTO(TEXTO(A1;"000000000");7;1)*4)+
(EXT.TEXTO(TEXTO(A1;"000000000");8;1)*3)+
(EXT.TEXTO(TEXTO(A1;"000000000");9;1)*2)
;11))*2  );11)))


Nenhum comentário: