Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 540696
            [titulo] => Validar CNS(Cadastra Nacional de Saúde) no Excel
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-12-24 12:34:56
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 332951
            [status] => A
            [isExample] => 
            [NomeUsuario] => Fabiano Carvalho
            [Login] => faabiianooc@gmail.com
            [Apelido] => Fabiano Carvalho
            [Foto] => 332951_20140826143737.jpg
            [Conteudo] => Essa parece ser a solução
[url:descricao=http://ramblings.mcpher.com/Home/excelquirks/snippets/scriptcontrol]http://ramblings.mcpher.com/Home/excelquirks/snippets/scriptcontrol[/url]

Ou então, é necessário converto-lo manualmente para VBA; ) )

Validar CNS(Cadastra Nacional de Saúde) no Excel

Filipe
|
MVP
Pontos: 130
    24 dez 2015

Prezados, bom dia.
Preciso de um help no excel.
Desculpe por parecer um abusado que quer tudo na mão, mas eu preciso disso urgente, e nesse momento, não tenho tempo para aprender, tal conhecimento buscarei assim que a poeira baixar.
Preciso de uma ajuda para converter essa rotina de JAVA em uma fórmula para excel.
Alguém pode me salvar?
Segue:
#Código
Rotina de validação de Números que iniciam com “1” ou “2”
// JavaScript Document
<!--
/*
*Chamar a rotina em um evento do form. Exemplo:
<input name="cns" type="text" title="cns" onChange="validaCNS(this.value)" value="cns" size="15" maxlength="15" />
*/
// Validação CNS
function validaCNS(vlrCNS) {
// Formulário que contem o campo CNS
var soma = new Number;
var resto = new Number;
var dv = new Number;
var pis = new String;
var resultado = new String;
var tamCNS = vlrCNS.length;
if ((tamCNS) != 15) {
alert("Numero de CNS invalido");
return false;
}
pis = vlrCNS.substring(0,11);
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5));
resto = soma % 11;
dv = 11 - resto;
if (dv == 11) {
dv = 0;
}
if (dv == 10) {
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5) + 2);
resto = soma % 11;
dv = 11 - resto;
resultado = pis + "001" + String(dv);
} else {
resultado = pis + "000" + String(dv);
}
if (vlrCNS != resultado) {
alert("Numero de CNS invalido");
return false;
} else {
alert("Numero de CNS válido");
return true;
}
}
-->
Rotina de validação de Números que iniciam com “7”, “8” ou “9”
function ValidaCNS_PROV(Obj)
{
var pis;
var resto;
var dv;
var soma;
var resultado;
var result;
result = 0;
pis = Obj.value.substring(0,15);
if (pis == "")
{
return false
}

if ( (Obj.value.substring(0,1) != "7") && (Obj.value.substring(0,1) != "8") && (Obj.value.substring(0,1) != "9") )
{
alert("Atenção! Número Provisório inválido!");
return false
}

soma = ( (parseInt(pis.substring( 0, 1),10)) * 15)
+ ((parseInt(pis.substring( 1, 2),10)) * 14)
+ ((parseInt(pis.substring( 2, 3),10)) * 13)
+ ((parseInt(pis.substring( 3, 4),10)) * 12)
+ ((parseInt(pis.substring( 4, 5),10)) * 11)
+ ((parseInt(pis.substring( 5, 6),10)) * 10)
+ ((parseInt(pis.substring( 6, 7),10)) * 9)
+ ((parseInt(pis.substring( 7, 8),10)) * 8)
+ ((parseInt(pis.substring( 8, 9),10)) * 7)
+ ((parseInt(pis.substring( 9,10),10)) * 6)
+ ((parseInt(pis.substring(10,11),10)) * 5)
+ ((parseInt(pis.substring(11,12),10)) * 4)
+ ((parseInt(pis.substring(12,13),10)) * 3)
+ ((parseInt(pis.substring(13,14),10)) * 2)
+ ((parseInt(pis.substring(14,15),10)) * 1);
resto = soma % 11;

if (resto == 0)
{
return true;
}
else
{
alert("Atenção! Número Provisório inválido!");
return false;
}
}

Observações:
1) Não existe máscara para o CNS nem para o Número Provisório. O número que aparece no cartão de forma separada (898 0000 0004 3208) deverá ser digitado sem as separações.
2) O 16º número que aparece no Cartão é o número da via do cartão, não é deverá ser digitado.

Post mais votado

Fabiano Carvalho
   - 24 dez 2015

Essa parece ser a solução
http://ramblings.mcpher.com/Home/excelquirks/snippets/scriptcontrol

Ou então, é necessário converto-lo manualmente para VBA;