Notifications
Clear all

CPF válido com ponto e traço, [SEM VBA] ?

5 Posts
2 Usuários
0 Reactions
928 Visualizações
(@antrrax)
Posts: 10
Active Member
Topic starter
 

Alguém tem uma fórmula pra verificar se o cpf é válido?

Importante, os cpf que tenho aqui estão vindo de outra base de dados que já está formatada com (pontos) e (traço).

é possível fazer isso usando apenas duas colunas, uma para o CPF e outra para o Válido/Invalido ?

 
Postado : 03/12/2017 1:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

.
Validar CPF não é tão simples assim não!! ...Sem VBA, vai depender de umas coluninhas auxiliares (que poderão ser ocultadas)!!!
.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/12/2017 1:48 pm
(@antrrax)
Posts: 10
Active Member
Topic starter
 

Essa formula funciona se o cpf estiver no formato apenas números sem (pontos) e (traço) :

A1 = 71333231920

=SE(E(NÚM.CARACT(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1))=11;SOMA(SE(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1)=REPT({1;2;3;4;5;6;7;8;9};11);1;0))=0;SOMA(SE(ÉNÚM(VALOR(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9;10;11};1)));0;1))=0);E(SE(OU(11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9};1))*({10;9;8;7;6;5;4;3;2}));11))=10;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9};1))*({10;9;8;7;6;5;4;3;2}));11))=11);0;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9};1))*({10;9;8;7;6;5;4;3;2}));11)))=INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);10;1));SE(OU(11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9;10};1))*({11;10;9;8;7;6;5;4;3;2}));11))=10;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9;10};1))*({11;10;9;8;7;6;5;4;3;2}));11))=11);0;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);{1;2;3;4;5;6;7;8;9;10};1))*({11;10;9;8;7;6;5;4;3;2}));11)))=INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(A1));A1);11;1)));FALSO)

alguém saberia modificá-la para analisar no formato já com (pontos) e (traço)?
A1 = 713.332.319-20

 
Postado : 03/12/2017 4:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

antrrax

Neste caso é só usar a fórmula abaixo, na coluna ao lado, para retornar o CPF sem pontos e traço para depois aplicar a tua fórmula.

=SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")

Se foi útil, clique na mãozinha.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/12/2017 5:12 pm
(@antrrax)
Posts: 10
Active Member
Topic starter
 

antrrax

=SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")

Substitui direto na fórmula sem usar outra coluna
onde estava ' A1 ' coloquei a sua sugestão de fórmula ' SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"") '
aqui funcionou!

Será que tem algum problema fazer assim?

=SE(E(NÚM.CARACT(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")))=11;SOMA(SE(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""))=REPT({1;2;3;4;5;6;7;8;9};11);1;0))=0;SOMA(SE(ÉNÚM(VALOR(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9;10;11};1)));0;1))=0);E(SE(OU(11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9};1))*({10;9;8;7;6;5;4;3;2}));11))=10;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9};1))*({10;9;8;7;6;5;4;3;2}));11))=11);0;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9};1))*({10;9;8;7;6;5;4;3;2}));11)))=INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));10;1));SE(OU(11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9;10};1))*({11;10;9;8;7;6;5;4;3;2}));11))=10;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9;10};1))*({11;10;9;8;7;6;5;4;3;2}));11))=11);0;11-(MOD(SOMA(INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));{1;2;3;4;5;6;7;8;9;10};1))*({11;10;9;8;7;6;5;4;3;2}));11)))=INT(EXT.TEXTO(CONCATENAR(REPT("0";11-NÚM.CARACT(SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";"")));SUBSTITUIR(SUBSTITUIR(A1;".";"");"-";""));11;1)));FALSO)
 
Postado : 03/12/2017 5:39 pm