
O que você vai aprender?
Nesta dica, você vai aprender a recuperar os zeros à esquerda que se perdem em CPFs e CNPJs e a calcular os dígitos verificadores de cada documento diretamente no Tableau Prep, classificando cada registro como válido ou inválido. E o melhor: a validação de CNPJ já está preparada para o novo CNPJ alfanumérico.
Introdução
CPF e CNPJ são chaves de cadastro em praticamente toda base de clientes, fornecedores ou parceiros. Mesmo assim, é muito comum recebermos esses campos com problemas: alguns vêm com pontuação e outros sem, alguns tem espaços extras, outros perderam os zeros à esquerda porque a planilha tratou o documento como número, e há ainda documentos digitados errado. Um CPF “00123456789” que virou “123456789” no Excel deixa de cruzar com o mesmo cliente em outra base, gera duplicidade e quebra joins.
Além disso, desde julho de 2026 a Receita Federal passou a emitir CNPJs alfanuméricos para novas inscrições. Os CNPJs já existentes continuam válidos e numéricos, mas as novas empresas podem receber identificadores com letras, como 12.ABC.345/01DE-35. Na prática, isso muda três coisas importantes para quem prepara dados:
- O campo de CNPJ precisa ser texto. Qualquer etapa que converta o CNPJ para número vai gerar erro ou valores nulos nos novos cadastros.
- A limpeza não pode mais remover tudo que não for número: ela precisa manter as letras.
- O cálculo do dígito verificador muda: cada caractere passa a valer o seu código ASCII menos 48. Para os números nada muda (o caractere “0” vale 0, o “9” vale 9), mas as letras ganham valores próprios (“A” vale 17, “B” vale 18 e assim por diante, até “Z”, que vale 42).
O novo CNPJ continua com 14 posições: as 8 primeiras (raiz) e as 4 seguintes (ordem do estabelecimento) podem ser letras ou números, e as 2 últimas, que são os dígitos verificadores, continuam sempre numéricas. A tabela abaixo mostra alguns exemplos da conversão de caracteres usada no cálculo:
Caractere | Código ASCII | Valor no cálculo |
0 | 48 | 0 |
5 | 53 | 5 |
9 | 57 | 9 |
A | 65 | 17 |
B | 66 | 18 |
C | 67 | 19 |
Z | 90 | 42 |
Para esta dica, vamos utilizar a base fictícia Base_Dica_Tableau_Prep_CPF_CNPJ.xlsx, que possui duas abas: Clientes, com ID, nome e CPF de pessoas físicas, e Fornecedores, com ID, razão social e CNPJ de empresas, incluindo CNPJs numéricos e alfanuméricos. Os documentos foram gerados aleatoriamente apenas para teste e trazem, de propósito, os problemas mais comuns: pontuação, espaços, zeros perdidos, letras minúsculas, dígitos repetidos e dígitos verificadores errados.
Passo 1: Conectando a base e garantindo que os documentos sejam texto
Vamos criar uma conexão com o arquivo Excel e arrastar a aba Clientes para o fluxo. Na etapa de Entrada, localize o campo CPF e clique no ícone do tipo de dado. Caso ele esteja como número (#), altere para Cadeia de caracteres (Abc). Faça o mesmo com o campo CNPJ quando trouxermos a aba Fornecedores.
Atenção: se ao converter você perceber valores terminando em “.0” (por exemplo, “1417075341.0”), significa que o Prep leu o campo como decimal. Nesse caso, converta primeiro para Número (inteiro) e só depois para Cadeia de caracteres, para que o “.0” não seja interpretado como um dígito a mais nos próximos passos.
Em seguida, clique no + ao lado da Entrada e adicione uma etapa de Limpeza. Todos os cálculos do CPF serão feitos nela.
Exemplo 1 – Validando o CPF
Passo 2: Removendo pontuação e espaços
Vamos criar um campo calculado. Para isso, clique nos três pontinhos (…) da coluna CPF, selecione Criar campo calculado > Cálculo personalizado, dê o nome CPF Limpo e escreva a fórmula abaixo. Ela mantém somente os números, eliminando pontos, traços, barras e espaços:
REGEXP_REPLACE([CPF], ‘[^0-9]’, ‘)
Passo 3: Recuperando os zeros à esquerda
Todo CPF tem 11 dígitos. Se o campo limpo tiver menos que isso, é sinal de que os zeros à esquerda se perderam. A técnica é simples: concatenamos onze zeros na frente do valor e pegamos apenas os 11 últimos caracteres com a função RIGHT. Crie um campo calculado chamado CPF Padronizado:
IF LEN([CPF Limpo]) <= 11
THEN RIGHT(‘00000000000’ + [CPF Limpo], 11)
ELSE [CPF Limpo]
END
Repare que só completamos com zeros quando o valor tem até 11 caracteres. Se ele tiver mais, mantemos o valor como está, para que o erro apareça na validação em vez de ser “cortado” silenciosamente pela função RIGHT. Na nossa base, a cliente Carla tinha o CPF “1417075341” (10 dígitos) e passou a ter “01417075341”.
Passo 4: Calculando os dígitos verificadores do CPF
Os dois últimos números do CPF são dígitos verificadores, calculados a partir dos anteriores. O primeiro dígito usa os 9 primeiros números multiplicados pelos pesos de 10 até 2. Somamos tudo, calculamos o resto da divisão por 11 e aplicamos a regra: se o resto for menor que 2, o dígito é 0; caso contrário, o dígito é 11 menos o resto. Mas relaxa, não precisa quebrar a cabeça pensando na fórmula, tem tudo pronto aqui embaixo.
Crie um campo calculado chamado CPF Soma DV1:
INT(MID([CPF Padronizado], 1, 1)) * 10 +
INT(MID([CPF Padronizado], 2, 1)) * 9 +
INT(MID([CPF Padronizado], 3, 1)) * 8 +
INT(MID([CPF Padronizado], 4, 1)) * 7 +
INT(MID([CPF Padronizado], 5, 1)) * 6 +
INT(MID([CPF Padronizado], 6, 1)) * 5 +
INT(MID([CPF Padronizado], 7, 1)) * 4 +
INT(MID([CPF Padronizado], 8, 1)) * 3 +
INT(MID([CPF Padronizado], 9, 1)) * 2
E, em seguida, o campo CPF DV1, que aplica a regra do resto da divisão por 11:
IF ([CPF Soma DV1] % 11) < 2 THEN 0
ELSE 11 – ([CPF Soma DV1] % 11)
END
O segundo dígito segue a mesma lógica, mas usa os 10 primeiros números (incluindo o primeiro dígito verificador) com pesos de 11 até 2. Crie o campo CPF Soma DV2:
INT(MID([CPF Padronizado], 1, 1)) * 11 +
INT(MID([CPF Padronizado], 2, 1)) * 10 +
INT(MID([CPF Padronizado], 3, 1)) * 9 +
INT(MID([CPF Padronizado], 4, 1)) * 8 +
INT(MID([CPF Padronizado], 5, 1)) * 7 +
INT(MID([CPF Padronizado], 6, 1)) * 6 +
INT(MID([CPF Padronizado], 7, 1)) * 5 +
INT(MID([CPF Padronizado], 8, 1)) * 4 +
INT(MID([CPF Padronizado], 9, 1)) * 3 +
INT(MID([CPF Padronizado], 10, 1)) * 2
E o campo CPF DV2:
IF ([CPF Soma DV2] % 11) < 2 THEN 0
ELSE 11 – ([CPF Soma DV2] % 11)
END
Passo 5: Classificando o status do CPF
Agora juntamos tudo em um único campo que explica o motivo de cada CPF ser válido ou inválido. Crie o campo calculado CPF Status:
IF ISNULL([CPF Limpo]) OR [CPF Limpo] = ” THEN ‘Ausente’
ELSEIF LEN([CPF Padronizado]) <> 11 THEN ‘Tamanho inválido’
ELSEIF REPLACE([CPF Padronizado], LEFT([CPF Padronizado], 1), ”) = ”
THEN ‘Dígitos repetidos’
ELSEIF STR([CPF DV1]) + STR([CPF DV2]) = RIGHT([CPF Padronizado], 2)
THEN ‘Válido’
ELSE ‘Dígito verificador inválido’
END
Um detalhe importante: CPFs com todos os números iguais, como “111.111.111-11”, passam no cálculo do dígito verificador, mas não são válidos. Para identificá-los, usamos um truque simples: removemos do texto todas as ocorrências do primeiro caractere com a função REPLACE. Se não sobrar nada, é porque todos os caracteres eram iguais.
Exemplo 2 – Validando o CNPJ (numérico e alfanumérico)
Para esse exemplo vamos utilizar a seguinte base de dados
Passo 6: Limpando e padronizando o CNPJ sem perder as letras
Adicione a aba Fornecedores ao fluxo, confirme que o campo CNPJ está como Cadeia de caracteres (como no Passo 1) e inclua uma nova etapa de Limpeza. Aqui está a primeira diferença em relação ao CPF: a limpeza precisa manter letras e números. Também convertemos tudo para maiúsculas com a função UPPER, já que o padrão da Receita utiliza letras maiúsculas e é comum que o valor seja digitado em minúsculas.
Crie o campo calculado CNPJ Limpo:
REGEXP_REPLACE(UPPER([CNPJ]), ‘[^0-9A-Z]’, ”)
E o campo CNPJ Padronizado, que completa os zeros à esquerda até 14 posições:
IF LEN([CNPJ Limpo]) <= 14
THEN RIGHT(‘00000000000000’ + [CNPJ Limpo], 14)
ELSE [CNPJ Limpo]
END
Na base de exemplo, o fornecedor Épsilon, que estava salvo como o número “440029000194”, passou a ter o CNPJ “00440029000194”, e o fornecedor Delta, digitado em minúsculas, foi padronizado para
“E7WXGSKZXSUC24”.
Passo 7: Calculando os dígitos verificadores com o código ASCII
Se usássemos a função INT para transformar cada caractere em número, como fizemos com o CPF, os CNPJs com letras retornariam valores nulos, porque INT(‘A’) não é um número. Por isso, vamos usar a função ASCII, que retorna o código de cada caractere, e subtrair 48. Essa conta funciona tanto para os CNPJs antigos quanto para os novos, então não precisamos de dois cálculos diferentes.
O primeiro dígito verificador usa os 12 primeiros caracteres com os pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2. Crie o campo CNPJ Soma DV1:
(ASCII(MID([CNPJ Padronizado], 1, 1)) – 48) * 5 +
(ASCII(MID([CNPJ Padronizado], 2, 1)) – 48) * 4 +
(ASCII(MID([CNPJ Padronizado], 3, 1)) – 48) * 3 +
(ASCII(MID([CNPJ Padronizado], 4, 1)) – 48) * 2 +
(ASCII(MID([CNPJ Padronizado], 5, 1)) – 48) * 9 +
(ASCII(MID([CNPJ Padronizado], 6, 1)) – 48) * 8 +
(ASCII(MID([CNPJ Padronizado], 7, 1)) – 48) * 7 +
(ASCII(MID([CNPJ Padronizado], 8, 1)) – 48) * 6 +
(ASCII(MID([CNPJ Padronizado], 9, 1)) – 48) * 5 +
(ASCII(MID([CNPJ Padronizado], 10, 1)) – 48) * 4 +
(ASCII(MID([CNPJ Padronizado], 11, 1)) – 48) * 3 +
(ASCII(MID([CNPJ Padronizado], 12, 1)) – 48) * 2
E o campo CNPJ DV1, com a mesma regra do resto da divisão por 11:
IF ([CNPJ Soma DV1] % 11) < 2 THEN 0
ELSE 11 – ([CNPJ Soma DV1] % 11)
END
Para o segundo dígito, usamos os 13 primeiros caracteres com os pesos 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2. Crie o campo CNPJ Soma DV2:
(ASCII(MID([CNPJ Padronizado], 1, 1)) – 48) * 6 +
(ASCII(MID([CNPJ Padronizado], 2, 1)) – 48) * 5 +
(ASCII(MID([CNPJ Padronizado], 3, 1)) – 48) * 4 +
(ASCII(MID([CNPJ Padronizado], 4, 1)) – 48) * 3 +
(ASCII(MID([CNPJ Padronizado], 5, 1)) – 48) * 2 +
(ASCII(MID([CNPJ Padronizado], 6, 1)) – 48) * 9 +
(ASCII(MID([CNPJ Padronizado], 7, 1)) – 48) * 8 +
(ASCII(MID([CNPJ Padronizado], 8, 1)) – 48) * 7 +
(ASCII(MID([CNPJ Padronizado], 9, 1)) – 48) * 6 +
(ASCII(MID([CNPJ Padronizado], 10, 1)) – 48) * 5 +
(ASCII(MID([CNPJ Padronizado], 11, 1)) – 48) * 4 +
(ASCII(MID([CNPJ Padronizado], 12, 1)) – 48) * 3 +
(ASCII(MID([CNPJ Padronizado], 13, 1)) – 48) * 2
E o campo CNPJ DV2:
IF ([CNPJ Soma DV2] % 11) < 2 THEN 0
ELSE 11 – ([CNPJ Soma DV2] % 11)
END
Para conferir se a conta está correta, vamos olhar a matemática por trás de outra forma, veja o exemplo do CNPJ alfanumérico 12.ABC.345/01DE-35. Convertendo os 12 primeiros caracteres e multiplicando pelos pesos, temos:
Caractere | 1 | 2 | A | B | C | 3 | 4 | 5 | 0 | 1 | D | E |
Valor | 1 | 2 | 17 | 18 | 19 | 3 | 4 | 5 | 0 | 1 | 20 | 21 |
Peso | 5 | 4 | 3 | 2 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Resultado | 5 | 8 | 51 | 36 | 171 | 24 | 28 | 30 | 0 | 4 | 60 | 42 |
A soma é 459, e o resto da divisão de 459 por 11 é 8. Como 8 não é menor que 2, o primeiro dígito é 11 − 8 = 3. Repetindo o processo com os 13 primeiros caracteres (agora incluindo o 3), a soma é 424, o resto é 6 e o segundo dígito é 11 − 6 = 5. Ou seja, os dígitos verificadores são 35, exatamente os dois últimos números do CNPJ.
Passo 8: Classificando o status do CNPJ
Assim como fizemos com o CPF, vamos criar o campo calculado CNPJ Status. A novidade aqui é a regra de formato: as 12 primeiras posições podem ter letras ou números, mas as 2 últimas precisam ser números. Usamos a função REGEXP_MATCH para verificar isso:
IF ISNULL([CNPJ Limpo]) OR [CNPJ Limpo] = ” THEN ‘Ausente’
ELSEIF LEN([CNPJ Padronizado]) <> 14 THEN ‘Tamanho inválido’
ELSEIF NOT REGEXP_MATCH([CNPJ Padronizado], ‘^[0-9A-Z]{12}[0-9]{2}$’)
THEN ‘Formato inválido’
ELSEIF REPLACE([CNPJ Padronizado], LEFT([CNPJ Padronizado], 1), ”) = ”
THEN ‘Caracteres repetidos’
ELSEIF STR([CNPJ DV1]) + STR([CNPJ DV2]) = RIGHT([CNPJ Padronizado], 2)
THEN ‘Válido’
ELSE ‘Dígito verificador inválido’
END
Na nossa base, o fornecedor “Eta” tem uma letra na posição do dígito verificador (“ZY.U2J.LW6/VZGV-1X”) e foi classificado como Formato inválido, enquanto o fornecedor Teta, com “00.000.000/0000-00”, foi classificado como Caracteres repetidos.
Ao final do fluxo, cada CPF e cada CNPJ está padronizado, com os zeros à esquerda recuperados, e classificado com um status que explica exatamente o que está errado em cada registro. Na base de exemplo, 5 dos 9 CPFs e 6 dos 9 CNPJs foram confirmados como válidos, incluindo os CNPJs alfanuméricos, e os demais foram separados para correção.
01 de Outubro de 2026
Pronto! Agora você já sabe como validar CPF e CNPJ no Tableau Prep, inclusive o novo CNPJ alfanumérico!
Dicas Recentes


Dicas Alteryx One – Separando textos em colunas e linhas com a ferramenta Text To Columns

Dicas Tableau – Como limpar e extrair textos no Tableau usando funções REGEXP

Dicas Tableau Prep – Como criar um ranking com a função RANK no Tableau Prep

Dicas Tableau – Como destacar um período parcial em um gráfico

