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:
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)))