CNPJ tem o mesmo tipo de problema que CPF: dois dígitos verificadores calculados a partir dos outros doze por um algoritmo de módulo 11, sem função pronta no Excel ou no Google Planilhas. A fórmula dá pra montar com SUMPRODUCT, sem plugin nem macro, mas, assim como no CPF, ela sozinha não garante uma planilha limpa. No fim do artigo eu conto onde ela para.
Como funciona a validação de CNPJ
Um CNPJ tem 14 dígitos: 12 dígitos "base" mais 2 dígitos verificadores. Cada um é calculado multiplicando os dígitos anteriores por pesos específicos, somando tudo, e aplicando o resto da divisão por 11:
- 1º dígito verificador (13ª posição): usa os 12 primeiros dígitos com pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
- 2º dígito verificador (14ª posição): usa os 13 primeiros dígitos (os 12 originais + o 1º verificador) com pesos 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
Em ambos os casos: se o resto da divisão por 11 for menor que 2, o dígito verificador é 0; senão, é 11 menos o resto.
A fórmula, passo a passo
Assumindo que o CNPJ (só números, sem pontuação) está na célula A2:
| Célula | O que calcula | Fórmula |
|---|---|---|
| B2 | Soma ponderada dos 12 primeiros dígitos (pesos 5,4,3,2,9,8,7,6,5,4,3,2) | =SUMPRODUCT(MID(A2,ROW(INDIRECT("1:12")),1)*1,{5;4;3;2;9;8;7;6;5;4;3;2}) |
| C2 | 1º dígito verificador | =IF(MOD(B2,11)<2,0,11-MOD(B2,11)) |
| D2 | Soma ponderada pro 2º dígito (pesos 6,5,4,3,2,9,8,7,6,5,4,3, mais o 1º dígito × 2) | =SUMPRODUCT(MID(A2,ROW(INDIRECT("1:12")),1)*1,{6;5;4;3;2;9;8;7;6;5;4;3})+C2*2 |
| E2 | 2º dígito verificador | =IF(MOD(D2,11)<2,0,11-MOD(D2,11)) |
| F2 | CNPJ válido? | =AND(LEN(A2)=14,VALUE(MID(A2,13,1))=C2,VALUE(MID(A2,14,1))=E2) |
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,".",""),"/",""),"-",""). Use o resultado dessa célula no lugar de A2 nas fórmulas acima.
Testando com um CNPJ real (Petrobras, dado público: 33.000.167/0001-01):
Já com o último dígito trocado, 33.000.167/0001-02, a fórmula pega o erro:
Onde essa fórmula não é suficiente
Ela confere a matemática certinho, mas não é a mesma coisa que garantir que os dados da sua planilha estão limpos, ou que a empresa existe de verdade:
- Sequências como 11.111.111/1111-11 passam na conta. Matematicamente o dígito verificador bate, mas esses números nunca foram emitidos de verdade. Um validador de verdade precisa rejeitar explicitamente todo CNPJ com os 14 dígitos iguais, o que a fórmula acima não faz sozinha.
- Zero à esquerda some quando o CNPJ está numa coluna numérica. Vários CNPJs de matriz têm o "0001" da raiz começando com zero: se a coluna for numérica, o Excel apaga esse zero inicial e as fórmulas acima vão dar erro de tamanho, não vão "adivinhar" o zero perdido.
- Passar na conta não significa que a empresa existe ou está ativa. O dígito verificador é só aritmética: ele não confirma que aquele CNPJ foi realmente emitido pela Receita Federal, nem se a empresa está ativa, baixada ou suspensa. Pra isso precisa consultar uma fonte de dados de verdade, não só validar o cálculo.
- Copiar a fórmula pra cada linha, de novo, toda vez que a planilha muda. Funciona bem pra conferir um CNPJ isolado; numa planilha de milhares de linhas com dado novo toda semana, vira manutenção constante.
Quer conferir um CNPJ isolado e já ver o nome da empresa, sem montar nada disso? Tem um validador de CNPJ gratuito que confere o dígito e busca a razão social na hora, direto do navegador.
Se é uma planilha inteira, não uma célula
O Zolyx faz essa conta (e a de CPF, telefone e e-mail) pra planilha inteira de uma vez (incluindo recuperar o zero à esquerda perdido e rejeitar sequências como 11.111.111/1111-11), sem fórmula nenhuma pra manter.
Testar com minha planilha