Capítulo 14: Validação de Dados, Sanitização e Listas Dependentes (INDIRETO)
🎯 Objetivo da Aula
O maior inimigo da integridade de um banco de dados é o erro de digitação humano. Se um operador digitar "São Paulo", outro "SP", outro "S. Paulo" e outro "Sao Paulo" (sem acento), todas as suas fórmulas de SOMASE, PROCV e relatórios de BI serão corrompidos.
Nesta aula, você aprenderá a:
- Aplicar o princípio de Sanitização e Validação de Entradas (Input Validation & Data Sanitization).
- Restringir tipos de dados: Números Inteiros, Decimais, Datas e Comprimento de Texto (Placas de 7 dígitos).
- Configurar Mensagens de Entrada (balões de dica) e Alertas de Erro (Parar, Aviso e Informações).
- Construir o efeito mais cobiçado em planilhas: Listas Suspensas Dependentes em Cascata utilizando Nomes Definidos e a função
INDIRETO(ao escolher o Estado, a lista de Cidades é filtrada automaticamente!). - O paralelo com Validação de Formulários Front-end e Constraints SQL na programação.
🏢 O Cenário Prático (Seu Desafio)
Situação: A central de atendimento e triagem da FastLog recebe centenas de despachos por dia preenchidos por atendentes em diferentes filiais. Frequentemente ocorrem erros graves:
- Digitação de placas inválidas (com 4 ou 8 caracteres em vez de 7).
- Tentativa de cadastrar “meia caixa” de embalagem (valores como
10,5). - Destinos digitados incorretamente com cidades que não pertencem ao Estado selecionado.
Missão: Você deve construir o Formulário de Entrada à Prova de Falhas da FastLog:
- Bloquear placas fora do padrão de 7 dígitos.
- Forçar a quantidade de caixas a ser um Número Inteiro positivo.
- Criar duas listas suspensas em cascata: ao selecionar o Estado (SP ou RJ), o campo de Cidade deve exibir apenas as cidades daquele estado via função
INDIRETO.
🧠 Fundamentos: A Teoria da Integridade de Dados
1. A Regra de Ouro da Engenharia de Software: “Never Trust User Input”
Na tecnologia, nunca permitimos que o usuário digite texto livre onde deveria existir uma opção controlada. A Validação de Dados é o filtro de segurança que intercepta o dado antes que ele seja gravado na memória:
graph TD
User[Operador Digita o Dado] --> Gatekeeper{Validação de Dados:<br/>Atende às regras?}
Gatekeeper -- "Sim (Válido)" --> Save[Grava o Valor na Célula]
Gatekeeper -- "Não (Inválido)" --> Alert["Dispara Janela de Alerta:<br/>'Apenas Cidades Autorizadas'"]
Alert --> Block[Rejeita a Entrada e Exige Nova Digitação]
style Gatekeeper fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
style Save fill:#217346,stroke:#fff,stroke-width:2px,color:#fff
style Alert fill:#e74c3c,stroke:#fff,stroke-width:2px,color:#fff2. Os Tipos de Validação de Dados
- Lista (Dropdown): O usuário só pode escolher opções de uma lista pré-aprovada.
- Número Inteiro / Decimal: Impede textos ou frações decimais (ex: Mínimo: 1, Máximo: 1.000).
- Comprimento do Texto: Exige quantidade exata de caracteres (ex: Placas com comprimento igual a 7; CEP com 8).
- Data / Hora: Restringe o preenchimento para períodos específicos (ex: apenas datas futuras).
3. Listas Dependentes em Cascata com a Função INDIRETO
O que é a função INDIRETO()?
A função INDIRETO transforma uma string de texto em uma referência real de células. Se a célula A1 contém a palavra "SP", a fórmula =INDIRETO(A1) faz o Excel buscar um intervalo de células que tenha sido batizado com o nome "SP".
graph LR
Estado["Célula B2:<br/>Seleciona 'SP'"] --> IND["Função =INDIRETO(B2)"]
IND --> NamedRange["Intervalo Nomeado 'SP':<br/>- São Paulo<br/>- Campinas<br/>- Santos"]
NamedRange --> Dropdown2["Dropdown de Cidade (C2):<br/>Exibe apenas cidades de SP!"]
style Estado fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style IND fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
style Dropdown2 fill:#217346,stroke:#fff,stroke-width:2px,color:#fff4. 🌐 Quadro Bilíngue (PT-BR vs EN)
| Recurso (Português) | Equivalente em Inglês | Onde fica? |
|---|---|---|
| Validação de Dados | Data Validation | Guia Dados (Data) |
| Gerenciador de Nomes | Name Manager | Guia Fórmulas (Formulas) |
| Função INDIRETO | INDIRECT | Categoria Pesquisa e Referência |
| Alerta de Erro (Parar) | Error Alert (Stop) | Janela de Validação de Dados |
5. 💡 Visão de Programador: Formulários Web e Constraints SQL
No desenvolvimento Web e bancos de dados:
- As listas suspensas do Excel equivalem à tag HTML
<select><option>e a validação de tamanho equivale a<input maxlength="7">. - No banco de dados SQL, usamos regras de integridade chamadas
CHECKe chaves estrangeirasFOREIGN KEY:
📖 Exemplo Guiado: Bloqueando Idades Menores de 18 Anos
Passo a Passo
- Em A1 digite
Idade do Motorista. - Clique na célula A2.
- Vá na guia Dados > Validação de Dados.
- Na aba Configurações:
- Permitir:
Número inteiro. - Dados:
está entre. - Mínimo:
18. - Máximo:
75.
- Permitir:
- Na aba Alerta de Erro:
- Estilo:
Parar. - Título:
Idade Não Permitida. - Mensagem de erro:
O motorista deve ter entre 18 e 75 anos de idade.
- Estilo:
- Dê OK e tente digitar
15em A2. O Excel bloqueará a entrada imediatamente com o seu pop-up personalizado!
🛠️ Prática Obrigatória 1: Listas Dependentes em Cascata (INDIRETO)
Vamos criar o formulário onde a escolha do Estado carrega apenas as Cidades daquele Estado.
Passo 1: Construindo as Tabelas de Referência
Na Planilha 1, crie os dados mestres nas colunas isoladas H até J:
- H1:
Estados➔ H2:SP, H3:RJ - I1:
SP➔ I2:Campinas, I3:Santos, I4:São José dos Campos - J1:
RJ➔ J2:Niterói, J3:Petrópolis, J4:Duque de Caxias
Passo 2: Criando os Intervalos Nomeados (Named Ranges)
- Selecione as cidades de SP (I2:I4).
- Vá na caixa de nomes (canto superior esquerdo, ao lado da barra de fórmulas) e digite
SPe aperte Enter. - Selecione as cidades do RJ (J2:J4).
- Vá na caixa de nomes, digite
RJe aperte Enter.
Passo 3: O Formulário com Efeito Cascata
- Em A2:
Selecione o Estado:| B2: (Onde o usuário escolhe). - Em A3:
Selecione a Cidade:| B3: (Onde a mágica acontece). - Dropdown do Estado (B2):
- Clique em B2 > Dados > Validação de Dados > Permitir: Lista.
- Fonte:
=$H$2:$H$3. Dê OK.
- Dropdown Dependente da Cidade (B3):
- Clique em B3 > Dados > Validação de Dados > Permitir: Lista.
- Fonte:
=INDIRETO(B2). Dê OK.
✅ Teste da Prática 1
- Selecione
SPna célula B2: a setinha da célula B3 mostrará apenas Campinas, Santos e São José dos Campos. - Mude B2 para
RJ: a setinha de B3 se transformará instantaneamente para exibir Niterói, Petrópolis e Duque de Caxias!
🛠️ Prática Obrigatória 2: Validação de Placas e Quantidades
Passo 1: O Formulário Operacional
Na Planilha 2 (renomeie para Validacao_Operacional):
- A1:
Placa do Caminhão:| B1: (Campo para preencher) - A2:
Quantidade de Paletes:| B2: (Campo para preencher)
Passo 2: Configurando as Travas de Segurança
- Trava da Placa (B1):
- Selecione B1 > Validação de Dados.
- Permitir:
Comprimento do texto| Dados:é igual a| Comprimento:7. - Alerta de Erro: “A placa deve conter rigorosamente 7 caracteres (ex: ABC1234 ou BRA2E19)”.
- Trava de Paletes (B2):
- Selecione B2 > Validação de Dados.
- Permitir:
Número inteiro| Dados:é maior do que| Mínimo:0. - Alerta de Erro: “A quantidade deve ser um número inteiro positivo (não são permitidas frações de palete)”.
📤 Instruções de Entrega (Microsoft Teams)
- Salve seu arquivo como:
Atividade_14_SeuNome_SeuSobrenome.xlsx - No Microsoft Teams, envie na tarefa “Capítulo 14 - Validação de Dados e INDIRETO”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica
Você aprendeu como construir Regras de Integridade de Dados (Data Integrity Constraints), garantindo que apenas dados 100% limpos e normalizados entrem no seu ecossistema.
🔥 Desafio de Fixação: Balão de Dica de Entrada (Tooltip)
Configure a célula da placa (B1) para exibir uma Mensagem de Entrada amarela flutuante assim que o usuário clicar nela:
- Título:
Formato Padrão Mercosul - Mensagem:
Digite a placa sem traços ou espaços (Exemplo: ABC1D23).
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.
- Qual o princípio da engenharia de software citado neste capítulo sobre entradas do usuário (“Never Trust User Input”)?
- Cite os quatro principais tipos de Validação de Dados no Excel.
- O que a função INDIRETO faz e como ela viabiliza listas dependentes em cascata?
- Como criamos um Intervalo Nomeado (Named Range) no Excel?
- Qual a diferença entre um Alerta de Erro do tipo “Parar” e uma simples Mensagem de Entrada?
- Dê um exemplo prático de uma regra de “Comprimento do Texto” aplicada a placas de veículos.
- Como a Validação de Dados do Excel se compara à tag HTML
<select>ou ao atributomaxlength? - O que é uma constraint do tipo
CHECKem um banco de dados SQL e qual sua relação com a Validação de Dados? - Por que erros de digitação (ex: “SP”, “S. Paulo”, “Sao Paulo”) prejudicam fórmulas como PROCV e SOMASE?
- Descreva o passo a passo para criar uma lista suspensa simples (não dependente) no Excel.