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:
- Diagnosticar a causa raiz de cada um dos 7 Erros Clássicos do Excel através do nosso Dicionário de Falhas.
- Utilizar as funções de blindagem
SEERROeSE.NÃO.DISPpara implementar Tratamento de Exceções. - Garantir a integridade visual e matemática de planilhas mesmo quando dados estiverem ausentes ou incompletos.
- Compreender o paralelo direto com o bloco
Try / Catchutilizado 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 Erro | Nome Técnico | Causa Raiz | Exemplo Prático | Como Corrigir? |
|---|---|---|---|---|
#DIV/0! | Division by Zero | Tentativa matemática impossível de dividir um número por zero ou por célula vazia. | =100 / 0 | Usar SEERRO ou verificar se o divisor é zero com SE(B2=0; 0; A2/B2). |
#N/D | Not Available | Um 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 Error | Incompatibilidade de tipos de dados (tentar fazer conta com texto). | ="Caminhão" + 50 | Garantir que as células contenham apenas números válidos. |
#NOME? | Name Error | O 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 Reference | Uma linha, coluna ou célula referenciada pela fórmula foi deletada. | Deletar a coluna B de =A1+B1 | Desfazer a exclusão (Ctrl + Z) ou reescrever a referência quebrada. |
#NÚM! | Number Error | Cá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 Error | Uma matriz dinâmica moderna não consegue se expandir porque há dados bloqueando o caminho. | =PROCX(...) tentando despejar 3 colunas sobre células preenchidas | Limpar 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:
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:#fff3. 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, prefiraSE.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ês | O que faz? |
|---|---|---|
SEERRO | IFERROR | Captura qualquer erro (#DIV/0!, #VALOR!, #N/D, #REF!) e substitui por um valor padrão. |
SE.NÃO.DISP | IFNA | Captura exclusivamente o erro #N/D (Not Available) de buscas e pesquisas. |
ÉERROS | ISERROR | Retorna VERDADEIRO se a célula contiver qualquer tipo de erro (função de checagem). |
ÉNÚM | ISNUMBER | Retorna 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:
📖 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
- Em A1 digite
Gasto Manutenção (R$), em B1Veículos, em C1Custo Unitário. - Em A2 digite
1500, em B2 digite5. - Em A3 digite
2000, em B3 digite0(filial sem veículos ativos). - Na célula C2, aplique a divisão blindada:
=SEERRO(A2/B2; 0). Retornará300. - Arraste para a célula C3. Em vez do erro
#DIV/0!, o Excel retornará0.
✅ Resultado Esperado (Exemplo)
| A | B | C | |
|---|---|---|---|
| 1 | Gasto Manutenção (R$) | Veículos | Custo Unitário |
| 2 | R$ 1.500,00 | 5 | R$ 300,00 |
| 3 | R$ 2.000,00 | 0 | R$ 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:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Filial | Custo_Combustivel | KM_Rodados | Custo_Por_KM | Status_Operacional |
| 2 | São Paulo - SP | 12000,00 | 4000 | ||
| 3 | Campinas - SP | 4500,00 | 1800 | ||
| 4 | Santos - SP | 3100,00 | 0 | ||
| 5 | Curitiba - PR | 8900,00 | 3200 | ||
| 6 | Joinville - SC | 1500,00 | 0 |
Passo 2: Implementando a Proteção Numérica
- Na célula D2, calcule o custo por quilômetro blindado:
=SEERRO(B2/C2; 0) - 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") - Arraste D2:E2 até a linha 6.
- Formate a coluna D como Moeda (R$).
✅ Resultado Esperado (Prática 1)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Filial | Custo_Combustivel | KM_Rodados | Custo_Por_KM | Status_Operacional |
| 2 | São Paulo - SP | R$ 12.000,00 | 4000 | R$ 3,00 | Ativo |
| 3 | Campinas - SP | R$ 4.500,00 | 1800 | R$ 2,50 | Ativo |
| 4 | Santos - SP | R$ 3.100,00 | 0 | R$ 0,00 | Sem Operação no Mês |
| 5 | Curitiba - PR | R$ 8.900,00 | 3200 | R$ 2,78 | Ativo |
| 6 | Joinville - SC | R$ 1.500,00 | 0 | R$ 0,00 | Sem 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
- Na célula D2, aplique:
=SEERRO((C2-B2)/B2; "Rota Nova") - Formate as células numéricas da coluna D como Porcentagem (%).
✅ Resultado Esperado (Prática 2)
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Rota | Faturamento_Jan | Faturamento_Fev | Crescimento_% |
| 2 | Rota 01 | R$ 10.000,00 | R$ 12.500,00 | 25,00% |
| 3 | Rota 02 | R$ 0,00 | R$ 4.000,00 | Rota Nova |
| 4 | Rota 03 | R$ 8.000,00 | R$ 6.000,00 | -25,00% |
📤 Instruções de Entrega (Microsoft Teams)
- Salve seu arquivo como:
Atividade_08_SeuNome_SeuSobrenome.xlsx - No Microsoft Teams, vá em Tarefas > “Capítulo 08 - Tratamento de Erros e Exceções”.
- 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:
📝 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.
- Cite pelo menos quatro dos erros clássicos do Excel e explique a causa de um deles.
- O que a função SEERRO faz e qual sua sintaxe básica?
- Qual a diferença entre SEERRO e SE.NÃO.DISP?
- Por que, ao usar PROCV, é recomendado usar SE.NÃO.DISP em vez de SEERRO?
- O que representa o erro #DIV/0! e como podemos evitá-lo?
- Qual o padrão de programação (em outras linguagens) equivalente ao SEERRO do Excel?
- O que significa o conceito de “Degradação Suave” (Graceful Degradation)?
- 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.
- O que a função ÉERROS retorna e como ela pode ser combinada com a função SE?
- Por que um relatório profissional não deve ser entregue com códigos de erro visíveis?