0 votos positivos 0 votos negativos
810 visitas
em Programas por monitor (11,3K pontos)

Boa tarde a todos!

Gostaria de saber se existe alguma funções no LibreOffice Calc para validar um CPF digitado em uma célula?

LibreOffice Calc 6.4.6.2

Desde já agradeço a atenção

2 Respostas

1 voto positivo 0 votos negativos
por monitor (15,8K pontos)

Existe uma extensão criada na Latinoware de 2011, mas não tenho como atestar se funciona nas versões atuais do LibreOffice:

https://extensions.libreoffice.org/en/extensions/show/validar

por monitor (11,3K pontos)
0 0
Muito obrigado pela resposta Blau

Mas, na minha versão 6.4.6.2 essa extensão não funcionou :(

Vou continuar  aguardar outras soluções.
1 voto positivo 0 votos negativos
por colaborador (8,3K pontos)

Eu não conheço uma função verificar CPF válido, então, vou mostrar a forma (Gambiarra kkk) que consegui para validar os CPF.

Como a fórmula é muito grande, vou explicando parte por parte até chegar ao final.

O CPF assim como outros documentos tem números que são conhecidos como DV (Dígitos
Verificadores). Esses números que são verificados, para validar um CPF.
Vamos criar três (03) colunas auxiliares para calcular os DV e validar o CPF:

https://i.ibb.co/zsHJLBN/imagem01.gif

Agora, vamos iniciar os cálculos hehe
1) Multiplicar os primeiros nove (09) números pela sequência de
10 até 2 e somar os resultados. No exemplo o CPF é: 11122233345

https://i.ibb.co/nBBdC7f/imagem02.gif

1.1) Vamos traduzir isso para o LibreOffice calc :D
1.2) temos que extrair o primeiro número do CPF da célula, então, vamos utilizar
a função "MEIO":

=MEIO(A3;1;1)

1.3) Vamos multiplicar esse resultado por 10

=MEIO(A3;1;1)*10

1.4) Vamos repetir esse processo com os outros nove (09) primeiros números do
CPF. Lembrando, que temos que colocar cada um dentro de parênteses;

=(MEIO(A3;1;1)*10)+(MEIO(A3;2;1)*9)+(MEIO(A3;3;1)*8)+(MEIO(A3;4;1)*7)+
(MEIO(A3;5;1)*6)+(MEIO(A3;6;1)*5)+(MEIO(A3;7;1)*4)+(MEIO(A3;8;1)*3)+
(MEIO(A3;9;1)*2)

2) Agora temos que pegar o resultado e dividir por onze (11), porém, não vamos
pegar o resultado e sim o resto (módulo) da divisão.
90%11 = 2

2.1) Fazendo isso no LibreOffice Calc, fica da seguinte forma:

=MOD((MEIO(A3;1;1)*10)+(MEIO(A3;2;1)*9)+(MEIO(A3;3;1)*8)+(MEIO(A3;4;1)*7)+
(MEIO(A3;5;1)*6)+(MEIO(A3;6;1)*5)+(MEIO(A3;7;1)*4)+(MEIO(A3;8;1)*3)+
(MEIO(A3;9;1)*2);11)

3) Em nosso exemplo resto da divisão foi igual a dois (02), então, vamos subtrair
esse resultado de onze (11):
11-2 = 9

3.1) Vamos passar isso para o LibreOffice Calc:
=11-MOD((MEIO(A3;1;1)*10)+(MEIO(A3;2;1)*9)+(MEIO(A3;3;1)*8)+(MEIO(A3;4;1)*7)+
(MEIO(A3;5;1)*6)+(MEIO(A3;6;1)*5)+(MEIO(A3;7;1)*4)+(MEIO(A3;8;1)*3)+
(MEIO(A3;9;1)*2);11)

Essa função tem que ser passada para a coluna "PDV". Pois, essa coluna que vai
ficar o nosso primeiro dígito verificador (DV)

https://i.ibb.co/CWGSgF6/imagem03.gif

[LINHA]

Vamos calcular o segundo dígito verificador (DV). Será o mesmo processo, porém,
agora vamos incluir o décimo número, que é o primeiro dígito verificador (DV).
Começando a multiplicação por 11 até 2 e somando o resultado

https://i.ibb.co/6s8M6nf/imagem04.gif

4) Vamos passar esse calculo para o LibreOffice Calc, utilizando a função
MEIO e colocando cada grupo dentro de parênteses:

=(MEIO(A3;1;1)*11)+(MEIO(A3;2;1)*10)+(MEIO(A3;3;1)*9)+(MEIO(A3;4;1)*8)+
(MEIO(A3;5;1)*7)+(MEIO(A3;6;1)*6)+(MEIO(A3;7;1)*5)+(MEIO(A3;8;1)*4)+
(MEIO(A3;9;1)*3)+(MEIO(A3;10;1)*2)

5) Vamos pegar o resultado, que nosso exemplo foi 126 e dividir por 11, porém,
será utilizado o resto (módulo) da divisão:

126%11 = 5

5.1) Agora iremos fazer esse cálculo no LibreOffice Calc, utilizando a função
MOD para obter o resto (módulo) da divisão:

=MOD((MEIO(A3;1;1)*11)+(MEIO(A3;2;1)*10)+(MEIO(A3;3;1)*9)+(MEIO(A3;4;1)*8)+
(MEIO(A3;5;1)*7)+(MEIO(A3;6;1)*6)+(MEIO(A3;7;1)*5)+(MEIO(A3;8;1)*4)+
(MEIO(A3;9;1)*3)+(MEIO(A3;10;1)*2);11)

6) Vamos subtrair o resultado por onze (11):

11-5 = 6

6.1) Então, passaremos essa cálculo para o LibreOffice Calc:

=11-MOD((MEIO(A3;1;1)*11)+(MEIO(A3;2;1)*10)+(MEIO(A3;3;1)*9)+(MEIO(A3;4;1)*8)+
(MEIO(A3;5;1)*7)+(MEIO(A3;6;1)*6)+(MEIO(A3;7;1)*5)+(MEIO(A3;8;1)*4)+
(MEIO(A3;9;1)*3)+(MEIO(A3;10;1)*2);11)

6.2) Então, adicione toda essa fórmula na coluna SDV:

https://i.ibb.co/hCJfr0C/Imagem05.gif

7) Agora temos que fazer a validação do CPF pelos digitos verificadores.
A condição é bem simples, o primeiro digito verificador (PDV) é o décimo número
do CPF e o segundo digito verificador (SDV) é igual ao décimo primeiro número
do CPF. Lembrando, que temos que validar, que caso o o resultado do dígito
verificador (DV) seja maior do que 10, então, ele será 0.

7.1) Vamos utilizar a função "SE" para validar se o primeiro dígito verificador
(PDV) é maior do que dez (10) ou se é igual ao décimo número do CPF:

=SE(B3>10;0=MEIO(A3;10;1);B3=MEIO(A3;10;1))

7.1.1) Porém, temos um pequeno problema nessa fórmula acima. A função "MEIO"
retorno texto, então, não vai conseguir fazer a comparação. Então, temos que
converter o zero (00) e o PDV (primeiro dígito verificador) para texto:

=SE(B3>10;0=MEIO(A3;10;1);TEXTO(B3;0)=MEIO(A3;10;1))

8) Agora vamos temos que fazer a mesma verificação (Ao mesmo tempo) do segundo
dígito verificador (SDV), para isso vamos alinhar o segundo "SE" dentro da
função "AND":

=E(SE(B3>10;"0"=MEIO(A3;10;1);TEXTO(B3;0)=MEIO(A3;10;1));
SE(C3>10;"0"=MEIO(A3;11;1);TEXTO(C3;0)=MEIO(A3;11;1)))

9) Para dar um toque final em nossa fórmula podemos fazer uma última verificação,
se foi digitado onze (11) dígitos na célula. Vamos utilizar a função "LEN" para
tal:

=IF(LEN(A3)<>11;"FALSO";AND(IF(B3>10;"0"=MID(A3;10;1);
TEXT(B3;0)=MID(A3;10;1));IF(C3>10;"0"=MID(A3;11;1);
TEXT(C3;0)=MID(A3;11;1))))

Agora, oculte as colunas "PDV" e "SDV" ou somente coloque a largura em zero.
Assim, você terá apenas a coluna "Verificador"

https://i.ibb.co/SBnffcD/imagem06.gif

Segue as referências abaixo:

https://help.libreoffice.org/3.5/Basic/Mid_Function,_Mid_Statement_Runtime/pt-BR

https://help.libreoffice.org/3.4/Calc/Mathematical_Functions/pt-BR#MOD

https://help.libreoffice.org/4.4/Calc/Text_Functions/pt

Seja bem-vindo(a) à comunidade debxp, onde você pode fazer perguntas e receber respostas de outros membros.
Atenção pessoal, esta plataforma não é um fórum, embora se pareça muito com um. Neste tipo de ferramenta, o objetivo é fazer e responder perguntas que possam resultar em material de consulta para outras pessoas que tenham as mesmas dúvidas e dificuldades. Portanto, não há sentido em utilizarmos o Ask para socialização, para emitir opiniões pessoais ou para perguntas do tipo "quem usa isso ou aquilo". Espero que compreendam o nosso propósito. :-)
...