A regra é simples: qualquer célula que deva estar vazia precisa estar verdadeiramente vazia. Não ="", não =SE(x;"";y). Se você precisa suprimir a exibição de forma condicional, use =SE(x; valor; NÃO.DISP()) e envolva a fórmula consumidora com SEERRO.
Em modelos com múltiplas abas e vários outputs de array dinâmico, como uma aba de retornos usando SEQUENCE para cabeçalhos de período e uma aba de fluxo de caixa usando FILTER para puxar do log de transações, o pré-diagnóstico com SOMARPRODUTO deve estar em uma linha de auditoria no final de cada aba. Vincule a uma formatação condicional para que fique vermelha quando o resultado for diferente de zero:
-- Insira isso em uma linha de auditoria em cada aba do modelo
=SOMARPRODUTO(--(NÃO(ÉCEL.VAZIA('Análise de Retornos'!C4:C343))))
Se o ModelMonkey faz parte do seu fluxo de trabalho, ele executa uma verificação de células antes de qualquer escrita em intervalo, sinalizando células não vazias no destino antes que a escrita aconteça, não depois. Isso captura o problema do ="" no momento em que causaria um erro de spill, e não quando você está depurando um pacote de relatórios para a diretoria na manhã da entrega.
Para mais detalhes sobre o que o Excel bloqueia especificamente dentro de tabelas estruturadas, veja Fórmulas de Array com Spill Não São Suportadas em Tabelas Excel.
Perguntas Frequentes
Por que minha célula parece vazia mas ainda bloqueia o SPILL?
Porque "parece vazia" e "está verdadeiramente vazia" são coisas diferentes para o Excel. Uma fórmula que retorna "", um espaço não separável colado de um ERP ou formatação residual fazem ÉCEL.VAZIA() retornar FALSO, mesmo sem conteúdo visível. Use =SOMARPRODUTO(--(NÃO(ÉCEL.VAZIA(intervalo)))) para contar os bloqueadores antes de depurar célula por célula.
O erro #SPILL! existe no Google Sheets?
Não com esse nome. No Google Sheets, o equivalente aparece como #REF! com a mensagem "Array result was not expanded because it would overwrite data". As causas são idênticas: fórmulas com "", caracteres invisíveis e células mescladas bloqueiam da mesma forma. O diagnóstico com ISBLANK também funciona de forma idêntica.
Qual a forma mais rápida de localizar a célula bloqueadora?
Clique na célula com #SPILL! e pressione F5, depois Especial e Células em Branco. O Excel seleciona apenas as células verdadeiramente vazias dentro do intervalo de saída. A célula que ficou de fora da seleção é o bloqueador.
Posso usar =SE(condição;"";valor) em células próximas a um intervalo de spill?
Só se essas células estiverem completamente fora do caminho de saída pretendido. Se houver qualquer sobreposição, substitua "" por NÃO.DISP() e envolva a fórmula consumidora com SEERRO. O retorno "" é a causa mais comum e mais difícil de detectar do erro "spill range isn't blank".
O que fazer quando nenhuma das causas conhecidas se aplica? Selecione o intervalo suspeito inteiro, vá em Página Inicial, clique em Limpar e escolha Limpar Tudo. Isso remove conteúdo, formatação e comentários de uma vez. Se o erro persistir, verifique se há uma segunda fórmula de array dinâmico com saída sobreposta ao mesmo intervalo.