Em um modelo de três demonstrações com 8 abas, um intervalo de propagação bloqueado cascateia por cada aba que o referencia. Aqui está o que está causando o problema e como corrigir cada variante. E se você trabalha principalmente no Google Sheets: o mesmo problema veste uma máscara diferente. Sem erro, apenas corrupção de dados silenciosa — o que é genuinamente pior.
Por que o Erro #SPILL no Excel Quebra Modelos Multi-Abas
Um intervalo de propagação é o bloco de células que uma fórmula de matriz dinâmica quer ocupar. =UNIQUE('DRE'!B:B) não escreve em uma única célula — expande-se para baixo cobrindo cada valor único encontrado. Se sua aba Premissas tem texto, resultado de fórmula, ou até um espaço em branco em qualquer célula de destino, a fórmula inteira retorna #SPILL! em vez de funcionar.
O problema multi-aba vem do operador de intervalo de propagação. =SUMIFS('DRE'!C:C, 'DRE'!B:B, Premissas!A2#) significa "use tudo no intervalo de propagação começando em A2, qualquer que seja o tamanho." Isso é poderoso quando funciona. Quando A2 retorna #SPILL!, toda fórmula downstream que referencia A2# herda aquele erro imediatamente e completamente. Sua linha de VPL de R$ 18,3 milhões se torna um erro antes de você tocar a aba de Retornos.
5 Causas do Erro #SPILL no Excel
Clique na célula mostrando #SPILL! e observe a borda tracejada azul — ela contorna o intervalo que o Excel tenta ocupar. Qualquer célula não vazia dentro dessa borda está bloqueando.
1. Célula Não Vazia no Intervalo de Propagação
A causa mais comum, e a mais trabalhosa de corrigir permanentemente. Você limpa o que acha ser a célula bloqueadora, a fórmula se resolve, depois quebra novamente no próximo recálculo. Aquela célula bloqueadora provavelmente é alimentada por uma fórmula de outra aba — ='Headcount'!D47 puxando um valor para sua zona de propagação vai preencher a célula novamente a cada recálculo da planilha.
Solução: Encontre a fórmula-fonte alimentando a célula bloqueadora e redirecione-a, ou mova sua fórmula de propagação para um intervalo genuinamente desocupado.
2. Fórmula Dentro de uma Tabela do Excel
Conforme a documentação oficial do #SPILL! da Microsoft: "Fórmulas de matriz dinâmica não são suportadas dentro de tabelas do Excel." (support.microsoft.com, verificado em abril de 2026.) Tabelas usam referências estruturadas, que são incompatíveis com o modelo de propagação em nível fundamental.
Solução: Mova a fórmula para fora da tabela, ou converta a tabela para um intervalo comum via Design de Tabela → Converter para Intervalo.
3. Matriz Muito Grande para o Espaço Disponível
Sua fórmula tenta propagar 47 linhas de dados de headcount da aba Headcount, mas bate em uma âncora de intervalo nomeado ou um bloco de entrada estática 30 linhas para baixo. O Excel não faz propagação parcial — retorna erro em toda a fórmula.
Solução: Libere linhas abaixo, ou use INDEX para limitar a saída: =INDEX(UNIQUE('Headcount'!B$2:B$500), SEQUENCE(30)).
4. Intervalo de Propagação Estende-se Além da Planilha
Acontece com fórmulas que calculam saída maior que a grade da planilha. O teto do Excel é 1.048.576 linhas × 16.384 colunas por planilha. Tente propagar além da linha 1.048.576 e você recebe #SPILL! independentemente do que estiver abaixo.
Solução: Limite a saída com =TAKE(formula, n) ou delimite a sequência: =SEQUENCE(MIN(ROWS('DRE'!B:B), 1000)).
5. Intervalo de Propagação Contém uma Célula Mesclada
Células mescladas bloqueiam intervalos de propagação exatamente como dados fazem, e são fáceis de perder porque parecem vazias. Para confirmar: selecione a zona de propagação com borda azul, depois Página Inicial → Localizar e Selecionar → Ir Para Especial → Em Branco. Se não selecionar cada célula no intervalo, uma célula mesclada é a culpada.
Solução: Desfaça a mesclagem de todas as células na área de propagação pretendida (Página Inicial → Mesclar e Centralizar → Desfazer mesclagem de células).
Como o Erro #SPILL no Excel Cascateia em um Modelo Multi-Aba
=SUM(Premissas!A2#) significa somar o intervalo de propagação inteiro, seja qual for o tamanho. Isso é poderoso quando funciona, e é por isso que erros se propagam imediata e completamente quando não funciona.
Em um LBO de 6+ abas — Premissas, DRE, Balanço Patrimonial, Fluxo de Caixa, FCFF, Retornos — uma única fórmula bloqueada em Premissas pode tocar cada aba antes de você rolar uma vez. A ordem de correção importa: resolva a célula bloqueadora raiz primeiro, então force o recálculo (Ctrl+Alt+F9 no Windows), depois verifique cada aba downstream sequencialmente. Corrigir abas fora de ordem apenas move o erro.
O pior cenário é uma célula bloqueadora que contém dados que você realmente precisa. Nesse caso, a fórmula de propagação precisa se mover, não os dados.
Excel vs. Google Sheets: Como Cada um Trata o Comportamento de Propagação
| Recurso | Excel (Microsoft 365) | Google Sheets |
|---|---|---|
| Matrizes dinâmicas lançadas | 2019 (canal atual) | Nativo desde o lançamento |
| Erro em intervalo bloqueado | #SPILL! (visível) | Sobrescrita silenciosa |
| Operador de intervalo de propagação | A2# | Não aplicável |
| Compatibilidade com tabelas | Incompatível com matrizes dinâmicas | ARRAYFORMULA funciona em tabelas |
| Auxílio visual de debug | Borda tracejada azul ao redor da zona de propagação | Sem indicador |
| Cascata multi-aba | Imediata, visível | Imediata, silenciosa |
O Problema da Sobrescrita Silenciosa no Google Sheets
O Google Sheets não tem erro #SPILL. ARRAYFORMULA simplesmente escreve sobre tudo que estiver no seu caminho. Se =ARRAYFORMULA(SUMIFS('DRE'!C$2:C$500, 'DRE'!B$2:B$500, Premissas!A2:A50)) decidir que precisa de mais linhas do que o esperado, sobrescreve o que estiver abaixo sem nenhum aviso. Sem erro, sem mensagem, sem borda azul.
Conforme a documentação do Google Workspace sobre ARRAYFORMULA: a função "permite a exibição de valores retornados de uma fórmula de matriz em múltiplas linhas e/ou colunas." (support.google.com/docs/answer/3093275, verificado em abril de 2026.) O que a documentação não destaca é que ela silenciosamente sobrescreverá dados existentes no intervalo de destino sem nenhum aviso de conflito. Se você entregou um deck para seu gestor onde ARRAYFORMULA havia consumido silenciosamente suas premissas de valor terminal codificadas na linha 38, esses números parecem corretos até alguém cruzar com a fonte — e até lá você já distribuiu o material.
Este é um modo de falha mais perigoso que #SPILL!, precisamente porque não se anuncia.
Como Auditar se ARRAYFORMULA Sobrescreveu Dados Reais no Google Sheets
Se você está rodando um modelo multi-aba no Sheets e algo parece estranho, veja como verificar se fórmulas de matriz sobrescreveram inputs estáticos.
Passo 1: Mapeie cada ARRAYFORMULA na planilha.
Não existe ferramenta de auditoria integrada. Use Editar → Localizar (Ctrl+H), procure ARRAYFORMULA, marque "Pesquisar em todas as planilhas." Anote cada célula que contém uma, a direção em que propaga e a contagem de linhas de saída esperada.
Passo 2: Verifique colisões entre saída de fórmula e células estáticas.
Para cada ARRAYFORMULA, verifique se a contagem de linhas corresponde às expectativas. Se sua fórmula em Premissas!A2 puxa 47 linhas de headcount da aba DRE, verifique se Premissas!A49, A50, A51 contêm o que você colocou lá. Se A50 tem um valor que não deveria existir, a fórmula expandiu e sobrescreveu em uma execução anterior — ou algo escreveu lá e a fórmula encolheu desde então, deixando dados órfãos.
Uma verificação rápida de contagem:
=COUNTA(Premissas!A2:A60)
Compare esse número com a contagem de linhas que você esperaria da fonte. Uma incompatibilidade é sinal de colisão.
Passo 3: Congele e compare antes de cada atualização do modelo.
A auditoria mais confiável para um deck trimestral: faça um snapshot do intervalo de saída antes de atualizar. Use uma aba Snapshot dedicada:
='Premissas'!A2:A50
Após a ARRAYFORMULA atualizar, compare antes/depois com:
=ARRAYFORMULA(IF('Premissas'!A2:A50 <> Snapshot!A2:A50, "MUDOU", ""))
Qualquer flag MUDOU em uma célula que deveria ser um input estático indica uma colisão. Esta é a mesma lógica usada para detectar mutações de dependência circular — você está identificando escritas inesperadas.
Passo 4: Delimite cada ARRAYFORMULA para um intervalo explícito.
Nunca use referências de coluna aberta como A:A dentro de ARRAYFORMULA em um modelo de produção. Delimite cada fórmula para uma contagem de linhas explícita que corresponda à sua saída máxima esperada:
=ARRAYFORMULA(IFERROR(
SUMIFS('DRE'!C$2:C$500, 'DRE'!B$2:B$500, Premissas!A2:A50),
0
))
Isso bloqueia a propagação para exatamente 49 linhas e retorna 0 para segmentos sem correspondência. Não impedirá sobrescritas abaixo da linha 50, mas torna a saída determinística e auditável entre atualizações.
Passo 5: Proteja células de input estático.
Qualquer premissa codificada que uma ARRAYFORMULA poderia alcançar deve ser explicitamente protegida: Dados → Proteger planilhas e intervalos → restrinja o acesso a você mesmo. Se a fórmula expandir para aquele intervalo, vai lançar um erro de permissão em vez de sobrescrever silenciosamente. É assim que você cria o equivalente Sheets do conflito #SPILL! visível do Excel — você força a colisão a fazer barulho.
Para modelos próximos do teto prático do Sheets de cerca de 10 milhões de células totais, esses passos pertencem ao checklist de pré-entrega, não à análise pós-morte.
O ModelMonkey pode escanear suas zonas de saída de ARRAYFORMULA contra seus intervalos protegidos e de input estático, sinalizando colisões potenciais antes de uma atualização do modelo. Útil quando a geometria de propagação muda entre trimestres — o que acontecerá toda vez que seu rollup de headcount ou lista de SKUs mudar de tamanho.
Perguntas Frequentes sobre o Erro #SPILL no Excel
O que significa o erro #SPILL no Excel? Significa que uma fórmula de matriz dinâmica tentou expandir seus resultados em um intervalo de células, mas encontrou pelo menos uma célula não vazia bloqueando o caminho. O Excel exige que todo o intervalo de destino esteja vazio para concluir a propagação.
Como faço para corrigir o erro #SPILL no Excel rapidamente? Clique na célula com #SPILL! e observe a borda tracejada azul. Localize qualquer célula não vazia dentro dessa borda e limpe-a ou mova seu conteúdo. Se a célula for alimentada por outra fórmula, redirecione a fonte ou mova sua fórmula de propagação para um intervalo desocupado.
Por que meu erro #SPILL volta após eu corrigir?
Porque a célula bloqueadora está sendo preenchida por outra fórmula que recalcula automaticamente — por exemplo, uma referência a outra aba como ='Headcount'!D47. Limpar a célula manualmente resolve o erro apenas até o próximo recálculo. Você precisa redirecionar a fórmula-fonte ou reposicionar sua fórmula de propagação.
Posso usar fórmulas de matriz dinâmica dentro de uma tabela do Excel? Não. Conforme a documentação da Microsoft, fórmulas de matriz dinâmica são incompatíveis com tabelas do Excel. Para usar esse tipo de fórmula, converta a tabela para um intervalo comum via Design de Tabela → Converter para Intervalo.
O Google Sheets tem um erro equivalente ao #SPILL? Não — e esse é o problema. Em vez de exibir um erro visível, o Google Sheets simplesmente sobrescreve os dados existentes no caminho da ARRAYFORMULA sem nenhum aviso. Esse comportamento silencioso é potencialmente mais perigoso que o #SPILL!, porque a corrupção de dados pode passar despercebida por dias ou semanas.
Como evitar que ARRAYFORMULA sobrescreva dados no Google Sheets? Três medidas essenciais: (1) delimite cada ARRAYFORMULA para um intervalo explícito em vez de usar referências de coluna abertas; (2) proteja células de input estático via Dados → Proteger planilhas e intervalos; (3) crie uma aba de snapshot para comparar valores antes e depois de cada atualização do modelo.