Mini-Projeto · Livro de registo e análise de ocorrências de um serviço municipal de proteção civil
Contexto
O Serviço Municipal de Proteção Civil de um município fictício regista as ocorrências em papel e em mensagens soltas, e a chefia não consegue responder a perguntas simples: quantas ocorrências houve por mês e por freguesia, que tipos mobilizam mais meios, quanto tempo demoram, quais continuam em curso. Pede-te que construas um livro de folha de cálculo que organize esses dados, os valide à entrada, os resuma em quadros e gráficos, e que possa ser partilhado com uma entidade externa sem expor informação desnecessária.
Trabalhas individualmente ou a pares, com os dados da secção seguinte: 30 ocorrências repartidas por três meses (colunas ID, Data, Freguesia, Tipo, Meios, Horas e Estado), a lista de tipologias e os escalões do nível de resposta. Entregas o livro, um breve relatório de uma página e uma apresentação curta à turma.
Dados do projeto
Os valores são fictícios e estão todos neste enunciado. Para a fase 2, escreve estes registos num editor de texto simples e grava-os como ficheiro CSV (codificação UTF-8, ponto e vírgula a separar as colunas, vírgula como separador decimal), que depois importas para o livro.
Ocorrências (30 registos, de março a maio de 2026):
| ID | Data | Freguesia | Tipo | Meios | Horas | Estado |
|---|---|---|---|---|---|---|
| O-001 | 02/03/2026 | Norte | Incêndio rural | 12 | 5,5 | Concluída |
| O-002 | 05/03/2026 | Centro | Inundação | 6 | 3,0 | Concluída |
| O-003 | 09/03/2026 | Sul | Queda de árvore | 3 | 1,5 | Concluída |
| O-004 | 14/03/2026 | Norte | Acidente rodoviário | 5 | 2,0 | Concluída |
| O-005 | 16/03/2026 | Nascente | Incêndio urbano | 8 | 3,0 | Concluída |
| O-006 | 19/03/2026 | Centro | Acidente rodoviário | 4 | 1,5 | Concluída |
| O-007 | 22/03/2026 | Sul | Inundação | 7 | 4,0 | Concluída |
| O-008 | 25/03/2026 | Nascente | Queda de árvore | 2 | 1,0 | Concluída |
| O-009 | 28/03/2026 | Norte | Incêndio rural | 14 | 6,5 | Concluída |
| O-010 | 30/03/2026 | Centro | Incêndio urbano | 9 | 3,5 | Concluída |
| O-011 | 02/04/2026 | Nascente | Incêndio rural | 15 | 8,0 | Concluída |
| O-012 | 04/04/2026 | Sul | Acidente rodoviário | 5 | 2,5 | Concluída |
| O-013 | 08/04/2026 | Centro | Inundação | 8 | 4,5 | Concluída |
| O-014 | 11/04/2026 | Norte | Queda de árvore | 3 | 1,0 | Concluída |
| O-015 | 13/04/2026 | Sul | Incêndio urbano | 9 | 3,5 | Concluída |
| O-016 | 17/04/2026 | Nascente | Acidente rodoviário | 4 | 2,0 | Concluída |
| O-017 | 20/04/2026 | Centro | Incêndio rural | 11 | 5,0 | Concluída |
| O-018 | 23/04/2026 | Norte | Inundação | 6 | 3,5 | Concluída |
| O-019 | 26/04/2026 | Sul | Queda de árvore | 2 | 1,5 | Concluída |
| O-020 | 29/04/2026 | Nascente | Incêndio urbano | 7 | 3,0 | Concluída |
| O-021 | 03/05/2026 | Norte | Queda de árvore | 2 | 1,0 | Concluída |
| O-022 | 05/05/2026 | Centro | Acidente rodoviário | 5 | 2,0 | Concluída |
| O-023 | 08/05/2026 | Sul | Incêndio rural | 13 | 6,0 | Concluída |
| O-024 | 10/05/2026 | Nascente | Inundação | 7 | 4,0 | Concluída |
| O-025 | 15/05/2026 | Centro | Incêndio rural | 10 | 6,0 | Em curso |
| O-026 | 17/05/2026 | Norte | Incêndio urbano | 8 | 3,0 | Concluída |
| O-027 | 20/05/2026 | Sul | Acidente rodoviário | 4 | 2,5 | Concluída |
| O-028 | 22/05/2026 | Nascente | Queda de árvore | 3 | 1,5 | Concluída |
| O-029 | 26/05/2026 | Norte | Inundação | 6 | 5,0 | Em curso |
| O-030 | 29/05/2026 | Sul | Incêndio rural | 9 | 5,5 | Em curso |
Tipologias (para a folha de apoio e para as procuras):
| Tipo | Prioridade | Equipa de referência |
|---|---|---|
| Incêndio rural | 1 | Equipa florestal |
| Incêndio urbano | 1 | Equipa de combate a incêndios urbanos |
| Inundação | 2 | Equipa de apoio e bombagem |
| Acidente rodoviário | 2 | Equipa de socorro rodoviário |
| Queda de árvore | 3 | Equipa de limpeza de vias |
Escalões do nível de resposta (para a correspondência aproximada):
| Meios (a partir de) | Nível |
|---|---|
| 0 | Reduzido |
| 5 | Moderado |
| 10 | Elevado |
Requisitos
Funcionais
- Importar o ficheiro CSV para um livro novo, verificando a codificação, os tipos de dados e os números guardados como texto, e corrigindo o que estiver mal.
- Organizar o livro em, pelo menos, quatro folhas com nomes claros: dados, apoio (tipologias e escalões), resumo e leia-me (as folhas mensais da fase 6 juntam-se a estas).
- Aplicar validação de dados a, pelo menos, quatro colunas (número inteiro, decimal, lista e data), com mensagem de entrada e alerta de erro.
- Usar fórmulas e funções de pelo menos quatro famílias: estatística (SUM, AVERAGE, MAX, MIN, COUNT), texto, data, e lógica com critérios (IF, COUNTIF, SUMIF ou SUMIFS).
- Acrescentar duas colunas obtidas por procura (VLOOKUP, XLOOKUP ou INDEX com MATCH): a prioridade e a equipa de referência de cada tipo.
- Aplicar filtros (automático e avançado) e pelo menos duas regras de formatação condicional, uma delas sobre a linha inteira.
- Converter os dados numa tabela com nome e linha de totais.
- Criar uma tabela dinâmica com freguesia e tipo, e um gráfico claro com título, eixos, unidades e eixo a começar em zero.
- Dividir os dados por mês em folhas separadas e consolidá-los numa folha de resumo com referência 3D.
- Gravar e editar duas macros: uma de formatação do registo e uma que percorre as linhas e marca as ocorrências prioritárias.
- Preparar uma versão para partilha externa sem dados desnecessários.
Não-funcionais
- Dados, cálculos e apresentação em folhas distintas; nenhuma célula unida na zona de dados.
- Nenhum valor numérico escrito dentro de fórmulas quando for um parâmetro (limites, taxas): ficam em células identificadas e com referência absoluta.
- Cada total verificado por dois caminhos diferentes (por exemplo, SUM e tabela dinâmica).
- Nomes de ficheiros e de folhas coerentes, sem acentos nos ficheiros; versões com data.
- Respeito pelas normas de conduta digital e pelos princípios do RGPD (por exemplo, a minimização) e por medidas como a pseudonimização quando houver dados pessoais, a proteção por palavra-passe e a remoção de metadados desnecessários.
- Gráficos honestos: sem eixo cortado, sem 3D, com aviso se um período estiver incompleto.
- As fórmulas deste enunciado usam os nomes ingleses das funções. No Excel em português escreve os nomes portugueses (tabela no capítulo 7 da sebenta): com o nome inglês, o Excel devolve
#NOME?.
Fases
Fase 1 · Planeamento e estrutura do livro (1h)
Ler o pedido da chefia, escrever as perguntas a que o livro deve responder e definir as colunas necessárias. Criar o livro, as folhas e a folha Leia-me (objetivo, origem dos dados, responsável, descrição das colunas). Definir formatos, fixar a linha de cabeçalhos e guardar com um nome adequado.
Fase 2 · Importar, limpar e validar os dados (2h) Importar o CSV com a codificação e o delimitador corretos, converter em números os valores guardados como texto, limpar espaços e duplicados e uniformizar as escritas. Criar a folha de apoio com a lista de tipologias e aplicar a validação de dados às colunas indicadas, com mensagens de entrada e alertas de erro. Testar cada regra com um valor válido e um inválido e registar o resultado.
Fase 3 · Fórmulas, funções e procuras (2h) Calcular na folha de resumo os totais de meios e de horas, médias, máximos e mínimos. Criar uma coluna de classificação com IF (por exemplo, duração longa ou curta), uma coluna de prioridade e outra de equipa com procura, e as contagens e somas condicionais por tipo, freguesia e estado. Acrescentar uma coluna com extração de texto (número de ordem do ID) e outra com data (mês ou dia da semana). Verificar três resultados com contas feitas à mão.
Fase 4 · Filtros, formatação condicional e tabela (1h) Converter o registo em tabela com nome e linha de totais. Aplicar o filtro automático para responder a duas perguntas da chefia e o filtro avançado com uma condição E e outra OU. Criar duas regras de formatação condicional, incluindo uma sobre a linha inteira. Mostrar a diferença entre SUM e SUBTOTAL numa lista filtrada.
Fase 5 · Tabela dinâmica e gráficos (2h) Criar a tabela dinâmica com freguesia em linhas, tipo em colunas e soma de meios em valores, e uma segunda vista com contagem de ocorrências por tipo e percentagens. Confirmar que o total da tabela dinâmica coincide com a soma direta. Criar um gráfico de colunas por tipo e um gráfico de linhas por mês, com todos os elementos de um bom gráfico e a indicação de períodos incompletos.
Fase 6 · Ligar folhas e automatizar (3h)
Dividir os dados por mês em folhas com a mesma estrutura, com o total no mesmo endereço, e construir o resumo com referência 3D. Gravar a macro de formatação, escrever a macro que percorre as linhas e marca as prioridades (detetando a última linha), guardar como .xlsm e testar numa cópia.
Fase 7 · Partilha segura, apresentação e reflexão (1h) Preparar a versão para uma entidade externa que só pede totais por freguesia: remover o que não é necessário, converter em valores, inspecionar o documento e proteger com palavra-passe. Apresentar à turma o livro, os dois gráficos e uma conclusão que se possa seguir até aos dados, mostrando um erro que encontraste e como o corrigiste.
Critérios de avaliação
| Critério | Peso |
|---|---|
| Estrutura do livro, tipos de dados e configuração | 10% |
| Importação, limpeza e validação de dados | 15% |
| Fórmulas, funções, critérios e procuras | 20% |
| Filtros, formatação condicional e tabela | 10% |
| Tabela dinâmica e gráficos | 20% |
| Ligação de folhas e macros | 15% |
| Proteção de dados, conduta digital, relatório e apresentação | 10% |
Solução de referência (linhas gerais)
Estrutura: folhas Leia-me, Registo (dados), Tipologias (tipologias em A1:C6 e escalões em E1:F4), Resumo (cálculos, tabela dinâmica e gráficos) e, depois da fase 6, Março, Abril e Maio. A linha 1 do Registo está fixa e formatada; a coluna Data tem formato de data, Meios de número inteiro e Horas de número com uma casa decimal.
Validação: Meios, número inteiro entre 1 e 200; Horas, decimal entre 0 e 72; Estado e Tipo, listas apontadas a Tipologias; Data, entre 01/01/2026 e 31/12/2026, todas com estilo de alerta Parar. Testes registados: 12,5 recusado em Meios, 0 recusado, 12 aceite.
Fórmulas (sobre os 30 registos, nas linhas 2 a 31): =SUM(E2:E31) = 207; =AVERAGE(E2:E31) = 6,9; =MAX(E2:E31) = 15; =MIN(E2:E31) = 2; =COUNTIF(D2:D31; "Incêndio rural") = 7; =SUMIFS(E2:E31; D2:D31; "Incêndio rural"; G2:G31; "Concluída") = 65; classificação =IF(F2>=5; "Longa"; "Curta"), com 8 ocorrências "Longa"; prioridade =VLOOKUP(D2; Tipologias!$A$2:$C$6; 2; FALSE) com IFERROR a assinalar tipos desconhecidos (12 ocorrências de prioridade 1); equipa de referência =VLOOKUP(D2; Tipologias!$A$2:$C$6; 3; FALSE) (por exemplo, "Equipa florestal" para O-001, de tipo Incêndio rural); nível de resposta =VLOOKUP(E2; Tipologias!$E$2:$F$4; 2; TRUE), com 6 "Elevado", 15 "Moderado" e 9 "Reduzido"; ordem do ID =VALUE(RIGHT(A2; 3)); mês =MONTH(B2). Verificação à mão sobre uma amostra: os meios das três primeiras ocorrências somam 12 + 6 + 3 = 21, e a fórmula =SUM(E2:E4) tem de dar o mesmo.
Filtros e tabela: tabela tblRegisto com linha de totais. Filtro automático para "incêndios rurais com 6 ou mais horas": 4 ocorrências (O-009, O-011, O-023 e O-025) e SUBTOTAL(109; ...) a mostrar a soma só do visível (52 meios, contra 207 de SUM). Filtro avançado com Tipo = Incêndio rural e Meios >=10 na mesma linha (E): 6 ocorrências; e outra zona de critérios com Freguesia = Sul numa linha e Estado = Em curso na seguinte (OU): 10 ocorrências. Formatação condicional: horas maiores que 5 realçadas (6 células) e linha inteira com a regra =$G2="Em curso" (3 linhas: O-025, O-029 e O-030).
Tabela dinâmica e gráficos: freguesia em linhas, tipo em colunas, soma de Meios.
| Freguesia | Acid. rodoviário | Inc. rural | Inc. urbano | Inundação | Queda de árvore | Total |
|---|---|---|---|---|---|---|
| Centro | 9 | 21 | 9 | 14 | 53 | |
| Nascente | 4 | 15 | 15 | 7 | 5 | 46 |
| Norte | 5 | 26 | 8 | 12 | 5 | 56 |
| Sul | 9 | 22 | 9 | 7 | 5 | 52 |
| Total | 27 | 84 | 41 | 40 | 15 | 207 |
O total geral é igual a =SUM direto. Segunda vista: tipo em linhas com soma de Meios, contagem de ID e % do total geral (incêndio rural 84 meios, 7 ocorrências, 40,6%; incêndio urbano 41, 5, 19,8%; inundação 40, 6, 19,3%; acidente rodoviário 27, 6, 13,0%; queda de árvore 15, 6, 7,2%). Gráfico de colunas ordenado do maior para o menor, com título "Meios empenhados por tipo de ocorrência (março a maio de 2026)", eixo vertical "Meios (n.º)" a começar em zero e rótulos cuja soma bate com o total. Gráfico de linhas por mês (70 em março, 70 em abril, 67 em maio) com nota de que o último mês pode estar incompleto.
Ligação: cada folha mensal tem dez registos e o total de meios na mesma célula, E12, com =SUM(E2:E11); Resumo usa =SUM(Março:Maio!E12) e, em paralelo, a soma das três ligações individuais (=Março!E12+Abril!E12+Maio!E12); os dois valores coincidem em 207.
Macros: FormatarRegisto (cabeçalho a negrito com fundo cinzento, colunas ajustadas, linha 1 fixa) e MarcarPrioridade, com Dim linha As Long, última linha obtida com Cells(Rows.Count, 1).End(xlUp).Row e ciclo For que escreve "Prioridade" numa coluna livre quando Horas é maior ou igual a 5 e o Estado é "Em curso" (marca O-025, O-029 e O-030). Livro guardado como .xlsm, testado numa cópia.
Partilha segura: cópia do livro apenas com a folha de totais por freguesia, fórmulas convertidas em valores, documento inspecionado (autor, comentários, folhas ocultas removidos), palavra-passe de abertura, e agregação das freguesias com contagens muito pequenas. Registo de quem recebeu o ficheiro, quando e para quê.
Relatório de uma página: perguntas da chefia, resposta a cada uma com número e gráfico, e uma conclusão que se segue até aos dados, por exemplo: "os incêndios rurais representam 84 dos 207 meios empenhados no período (cerca de 41%), em 7 das 30 ocorrências".
Erros comuns
- Importar o CSV com a codificação errada e ficar com acentos estragados, ou com o delimitador errado e tudo numa só coluna.
- Deixar números como texto e descobrir só no fim que as somas dão zero.
- Unir células na zona de dados e ficar sem poder filtrar nem criar a tabela dinâmica.
- Escrever valores fixos dentro das fórmulas em vez de usar células de parâmetros com referência absoluta.
- VLOOKUP sem FALSE, ou com a tabela de procura sem cifrões, e erros que só aparecem nas últimas linhas.
- Usar SUM numa lista filtrada em vez de SUBTOTAL.
- Esquecer-se de atualizar a tabela dinâmica antes de apresentar.
- Gráficos com eixo cortado, sem título nem unidades, ou a comparar um mês incompleto com meses completos.
- Referências 3D com folhas de estruturas diferentes, ou o total em endereços diferentes.
- Guardar o livro com macros em
.xlsxe perdê-las, ou executar uma macro sem cópia de segurança. - Partilhar o livro com folhas ocultas, comentários ou metadados que contêm informação que ninguém pediu.
Bónus (opcional)
- Acrescentar uma segmentação à tabela dinâmica para filtrar por estado ou por freguesia com botões.
- Ligar um segundo ficheiro ao livro (por exemplo, a lista de tipologias guardada à parte) e verificar o que acontece quando o ficheiro é movido.
- Criar uma folha de painel com quatro indicadores (total de meios, número de ocorrências em curso, duração média, tipo com mais meios) e dois gráficos, tudo atualizado a partir da tabela.
- Substituir a macro de marcação por uma formatação condicional equivalente e comparar as duas soluções.
- Escrever uma terceira macro que ordene o registo por freguesia e, dentro de cada uma, por meios do maior para o menor.
- Propor uma política de nomes e de versões para os ficheiros da equipa, com regras para pastas partilhadas e cópias de segurança.
Reflexão
No relatório final, responde: qual foi a verificação (um total comparado por dois caminhos, um teste de validação ou uma conta à mão) que te evitou um erro que, de outro modo, teria passado para a apresentação? E se a chefia te pedisse para partilhar o livro completo, com todas as linhas, com uma entidade externa, que critério usarias para decidir o que deve ou não sair da tua organização?