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:

  1. Aplicar o princípio de Sanitização e Validação de Entradas (Input Validation & Data Sanitization).
  2. Restringir tipos de dados: Números Inteiros, Decimais, Datas e Comprimento de Texto (Placas de 7 dígitos).
  3. Configurar Mensagens de Entrada (balões de dica) e Alertas de Erro (Parar, Aviso e Informações).
  4. 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!).
  5. 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:

  1. Bloquear placas fora do padrão de 7 dígitos.
  2. Forçar a quantidade de caixas a ser um Número Inteiro positivo.
  3. 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:#fff

2. 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:#fff

4. 🌐 Quadro Bilíngue (PT-BR vs EN)

Recurso (Português)Equivalente em InglêsOnde fica?
Validação de DadosData ValidationGuia Dados (Data)
Gerenciador de NomesName ManagerGuia Fórmulas (Formulas)
Função INDIRETOINDIRECTCategoria 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 CHECK e chaves estrangeiras FOREIGN KEY:
    1
    2
    3
    4
    5
    
    CREATE TABLE Despachos (
        Placa VARCHAR(7) NOT NULL,
        Quantidade INT CHECK (Quantidade > 0),
        Estado VARCHAR(2) CHECK (Estado IN ('SP', 'RJ', 'MG'))
    );

📖 Exemplo Guiado: Bloqueando Idades Menores de 18 Anos

Passo a Passo

  1. Em A1 digite Idade do Motorista.
  2. Clique na célula A2.
  3. Vá na guia Dados > Validação de Dados.
  4. Na aba Configurações:
    • Permitir: Número inteiro.
    • Dados: está entre.
    • Mínimo: 18.
    • Máximo: 75.
  5. 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.
  6. Dê OK e tente digitar 15 em 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: EstadosH2: SP, H3: RJ
  • I1: SPI2: Campinas, I3: Santos, I4: São José dos Campos
  • J1: RJJ2: Niterói, J3: Petrópolis, J4: Duque de Caxias

Passo 2: Criando os Intervalos Nomeados (Named Ranges)

  1. Selecione as cidades de SP (I2:I4).
  2. Vá na caixa de nomes (canto superior esquerdo, ao lado da barra de fórmulas) e digite SP e aperte Enter.
  3. Selecione as cidades do RJ (J2:J4).
  4. Vá na caixa de nomes, digite RJ e aperte Enter.

Passo 3: O Formulário com Efeito Cascata

  1. Em A2: Selecione o Estado: | B2: (Onde o usuário escolhe).
  2. Em A3: Selecione a Cidade: | B3: (Onde a mágica acontece).
  3. Dropdown do Estado (B2):
    • Clique em B2 > Dados > Validação de Dados > Permitir: Lista.
    • Fonte: =$H$2:$H$3. Dê OK.
  4. 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 SP na 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

  1. 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)”.
  2. 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)

  1. Salve seu arquivo como: Atividade_14_SeuNome_SeuSobrenome.xlsx
  2. No Microsoft Teams, envie na tarefa “Capítulo 14 - Validação de Dados e INDIRETO”.
  3. 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.

  1. Qual o princípio da engenharia de software citado neste capítulo sobre entradas do usuário (“Never Trust User Input”)?
  2. Cite os quatro principais tipos de Validação de Dados no Excel.
  3. O que a função INDIRETO faz e como ela viabiliza listas dependentes em cascata?
  4. Como criamos um Intervalo Nomeado (Named Range) no Excel?
  5. Qual a diferença entre um Alerta de Erro do tipo “Parar” e uma simples Mensagem de Entrada?
  6. Dê um exemplo prático de uma regra de “Comprimento do Texto” aplicada a placas de veículos.
  7. Como a Validação de Dados do Excel se compara à tag HTML <select> ou ao atributo maxlength?
  8. O que é uma constraint do tipo CHECK em um banco de dados SQL e qual sua relação com a Validação de Dados?
  9. Por que erros de digitação (ex: “SP”, “S. Paulo”, “Sao Paulo”) prejudicam fórmulas como PROCV e SOMASE?
  10. Descreva o passo a passo para criar uma lista suspensa simples (não dependente) no Excel.