Capítulo 08: Tratamento de Erros e Lógica de Exceção (SEERRO e Dicionário de Falhas)

🎯 Objetivo da Aula

Nada parece menos profissional do que entregar um relatório para a diretoria contendo células poluídas com #DIV/0!, #N/D, #VALOR! ou #REF!. Esses códigos não são apenas “feios”: eles quebram cálculos subsequentes e paralisam a automação de planilhas.

Nesta aula, você aprenderá a:

  1. Diagnosticar a causa raiz de cada um dos 7 Erros Clássicos do Excel através do nosso Dicionário de Falhas.
  2. Utilizar as funções de blindagem SEERRO e SE.NÃO.DISP para implementar Tratamento de Exceções.
  3. Garantir a integridade visual e matemática de planilhas mesmo quando dados estiverem ausentes ou incompletos.
  4. Compreender o paralelo direto com o bloco Try / Catch utilizado no desenvolvimento de software.

🏢 O Cenário Prático (Seu Desafio)

Situação: O setor de controladoria da FastLog preparou uma planilha para calcular o Custo Médio por Quilômetro Rodado e a Taxa de Crescimento Mensal das filiais. No entanto, algumas filiais são novas e ainda possuem 0 km rodados ou 0 vendas no mês anterior. Ao tentar dividir por zero, a planilha inteira travou com erros de #DIV/0!, impedindo a soma dos totais da empresa.

Missão: Você deve reestruturar as fórmulas da planilha aplicando tratamento de exceções, garantindo que o sistema exiba mensagens informativas amigáveis (como "Aguardando Operação") ou valores numéricos neutros (0,00), mantendo a integridade dos somatórios gerais.


🧠 Fundamentos: A Teoria do Tratamento de Exceções

1. O Dicionário de Erros do Excel (Error Code Reference)

Antes de corrigir um erro, precisamos saber o que a máquina está tentando nos dizer:

Código de ErroNome TécnicoCausa RaizExemplo PráticoComo Corrigir?
#DIV/0!Division by ZeroTentativa matemática impossível de dividir um número por zero ou por célula vazia.=100 / 0Usar SEERRO ou verificar se o divisor é zero com SE(B2=0; 0; A2/B2).
#N/DNot AvailableUm valor pesquisado não existe na base de dados de busca.PROCV("Item99"; A1:B10; 2; 0)*Usar SE.NÃO.DISP ou conferir se o código foi digitado corretamente.
#VALOR!Value ErrorIncompatibilidade de tipos de dados (tentar fazer conta com texto).="Caminhão" + 50Garantir que as células contenham apenas números válidos.
#NOME?Name ErrorO Excel não reconheceu o nome da função ou intervalo digitado.=SOMAA(A1:A10) (com 2 As)Corrigir a ortografia da função ou verificar se faltaram aspas em um texto.
#REF!Invalid ReferenceUma linha, coluna ou célula referenciada pela fórmula foi deletada.Deletar a coluna B de =A1+B1Desfazer a exclusão (Ctrl + Z) ou reescrever a referência quebrada.
#NÚM!Number ErrorCálculo numérico impossível (ex: raiz de número negativo ou estouro de limite).=RAIZ(-25)Revisar a lógica matemática da fórmula.
#DESPEJAR!Spill ErrorUma matriz dinâmica moderna não consegue se expandir porque há dados bloqueando o caminho.=PROCX(...) tentando despejar 3 colunas sobre células preenchidasLimpar as células vizinhas para liberar o espaço de expansão.

* PROCV e PROCX são funções de busca que vamos aprender em capítulos futuros (09 e 11). Por ora, não é preciso saber usá-las: o importante aqui é entender que #N/D significa “o valor procurado não foi encontrado” e #DESPEJAR! significa “não há espaço livre para a resposta se expandir”.


2. A Função SEERRO (O Escudo Universal)

A função SEERRO atua como uma capa de proteção ao redor de qualquer cálculo do Excel:

1
=SEERRO(expressao_de_calculo; valor_caso_falhe)
graph TD
    A[Início do Cálculo: =SEERRO] --> B{O cálculo gerou<br/>algum código de erro?}
    B -- "Não (Sucesso)" --> C[Retorna o Resultado Real do Cálculo]
    B -- "Sim (Falha / Exception)" --> D[Intercepta o Erro e Retorna o Valor Amigável]
    
    style B fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
    style C fill:#217346,stroke:#fff,stroke-width:2px,color:#fff
    style D fill:#e67e22,stroke:#fff,stroke-width:2px,color:#fff

3. A Função SE.NÃO.DISP (Tratamento Específico de Buscas)

Enquanto o SEERRO mascara qualquer erro (incluindo erros de digitação de fórmulas como #NOME?), a função SE.NÃO.DISP protege exclusivamente contra o erro de busca #N/D.

  • Boas Práticas de Engenharia: Se você estiver fazendo buscas com PROCV, prefira SE.NÃO.DISP. Dessa forma, se você errar a sintaxe da fórmula, o Excel ainda te avisará com #NOME?, em vez de esconder seu erro acidentalmente.

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

Função (Português)Equivalente em InglêsO que faz?
SEERROIFERRORCaptura qualquer erro (#DIV/0!, #VALOR!, #N/D, #REF!) e substitui por um valor padrão.
SE.NÃO.DISPIFNACaptura exclusivamente o erro #N/D (Not Available) de buscas e pesquisas.
ÉERROSISERRORRetorna VERDADEIRO se a célula contiver qualquer tipo de erro (função de checagem).
ÉNÚMISNUMBERRetorna VERDADEIRO se o conteúdo for um número válido.

5. 💡 Visão de Programador: O Padrão Try / Catch

Em linguagens como JavaScript, Python e C#, os engenheiros de software nunca deixam um programa abortar abruptamente (crashar). Nós encapsulamos códigos de risco em blocos de tratamento de exceções:

1
2
3
4
5
6
7
8
// Analogia direta do =SEERRO(custoTotal / kmRodados; 0) em JavaScript:
let custoKm;
try {
    if (kmRodados === 0) throw new Error("Divisão por zero");
    custoKm = custoTotal / kmRodados;
} catch (erro) {
    custoKm = 0; // Valor neutro de segurança (Fallback)
}

📖 Exemplo Guiado: Blindando uma Divisão Simples

Vamos criar um cálculo de divisão de custos operacionais entre veículos da frota.

Passo a Passo

  1. Em A1 digite Gasto Manutenção (R$), em B1 Veículos, em C1 Custo Unitário.
  2. Em A2 digite 1500, em B2 digite 5.
  3. Em A3 digite 2000, em B3 digite 0 (filial sem veículos ativos).
  4. Na célula C2, aplique a divisão blindada: =SEERRO(A2/B2; 0). Retornará 300.
  5. Arraste para a célula C3. Em vez do erro #DIV/0!, o Excel retornará 0.

✅ Resultado Esperado (Exemplo)

ABC
1Gasto Manutenção (R$)VeículosCusto Unitário
2R$ 1.500,005R$ 300,00
3R$ 2.000,000R$ 0,00

🛠️ Prática Obrigatória 1: Relatório de Indicadores Operacionais Blindados

Passo 1: Construindo a Matriz de Desempenho

Na Planilha 1, insira os dados nas células A1 até E6:

ABCDE
1FilialCusto_CombustivelKM_RodadosCusto_Por_KMStatus_Operacional
2São Paulo - SP12000,004000
3Campinas - SP4500,001800
4Santos - SP3100,000
5Curitiba - PR8900,003200
6Joinville - SC1500,000

Passo 2: Implementando a Proteção Numérica

  1. Na célula D2, calcule o custo por quilômetro blindado: =SEERRO(B2/C2; 0)
  2. Na célula E2, crie um alerta condicional textual caso o cálculo seja zero: =SE(D2=0; "Sem Operação no Mês"; "Ativo")
  3. Arraste D2:E2 até a linha 6.
  4. Formate a coluna D como Moeda (R$).

✅ Resultado Esperado (Prática 1)

ABCDE
1FilialCusto_CombustivelKM_RodadosCusto_Por_KMStatus_Operacional
2São Paulo - SPR$ 12.000,004000R$ 3,00Ativo
3Campinas - SPR$ 4.500,001800R$ 2,50Ativo
4Santos - SPR$ 3.100,000R$ 0,00Sem Operação no Mês
5Curitiba - PRR$ 8.900,003200R$ 2,78Ativo
6Joinville - SCR$ 1.500,000R$ 0,00Sem Operação no Mês

🛠️ Prática Obrigatória 2: Cálculo de Variação Percentual sem Erros

Na análise de crescimento financeiro, a fórmula é: $\frac{\text{Mês Atual} - \text{Mês Anterior}}{\text{Mês Anterior}}$. Se o mês anterior foi zero, o Excel gera divisão por zero.

Passo 1: A Tabela de Faturamento

Na Planilha 2 (renomeie para Crescimento), crie:

  • A1: Rota, B1: Faturamento_Jan, C1: Faturamento_Fev, D1: Crescimento_%
  • Linha 2: Rota 01 | 10000 | 12500
  • Linha 3: Rota 02 | 0 | 4000 (Rota inaugurada em Fevereiro)
  • Linha 4: Rota 03 | 8000 | 6000

Passo 2: O Tratamento de Exceção Textual

  1. Na célula D2, aplique: =SEERRO((C2-B2)/B2; "Rota Nova")
  2. Formate as células numéricas da coluna D como Porcentagem (%).

✅ Resultado Esperado (Prática 2)

ABCD
1RotaFaturamento_JanFaturamento_FevCrescimento_%
2Rota 01R$ 10.000,00R$ 12.500,0025,00%
3Rota 02R$ 0,00R$ 4.000,00Rota Nova
4Rota 03R$ 8.000,00R$ 6.000,00-25,00%

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve seu arquivo como: Atividade_08_SeuNome_SeuSobrenome.xlsx
  2. No Microsoft Teams, vá em Tarefas > “Capítulo 08 - Tratamento de Erros e Exceções”.
  3. Faça o upload e clique em Entregar (Turn In).

💡 Checkpoint de Lógica: Robustez de Software (Graceful Degradation)

Você acaba de aprender o princípio de Degradação Suave (Graceful Degradation). Um sistema robusto nunca quebra na frente do cliente: ele prevê a falha, captura o erro e apresenta um caminho alternativo elegante.


🔥 Desafio de Fixação: Blindagem com ÉERROS

Em vez de usar SEERRO, tente obter o mesmo resultado na coluna D utilizando a combinação aninhada da função condicional com o verificador lógico:

1
=SE(ÉERROS((C2-B2)/B2); "Rota Nova"; (C2-B2)/B2)

📝 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. Cite pelo menos quatro dos erros clássicos do Excel e explique a causa de um deles.
  2. O que a função SEERRO faz e qual sua sintaxe básica?
  3. Qual a diferença entre SEERRO e SE.NÃO.DISP?
  4. Por que, ao usar PROCV, é recomendado usar SE.NÃO.DISP em vez de SEERRO?
  5. O que representa o erro #DIV/0! e como podemos evitá-lo?
  6. Qual o padrão de programação (em outras linguagens) equivalente ao SEERRO do Excel?
  7. O que significa o conceito de “Degradação Suave” (Graceful Degradation)?
  8. Escreva a fórmula usada na Prática Obrigatória 2 para substituir, pelo texto “Rota Nova”, o erro gerado quando o Faturamento de Janeiro (mês anterior) é zero.
  9. O que a função ÉERROS retorna e como ela pode ser combinada com a função SE?
  10. Por que um relatório profissional não deve ser entregue com códigos de erro visíveis?