Função FILTER do Excel Retorna Array Vazio Inesperadamente: Correção
🔍 WiseChecker

Função FILTER do Excel Retorna Array Vazio Inesperadamente: Correção

Você escreveu uma fórmula FILTER esperando uma lista de registros correspondentes, mas o resultado é o erro #CALC! ou uma célula em branco. Isso acontece quando a função FILTER não encontra nenhuma linha que atenda ao seu teste lógico. A função foi projetada para retornar um array vazio quando nenhuma linha corresponde, mas esse comportamento pode ser confuso quando você acredita que existem correspondências. Este artigo explica os motivos exatos pelos quais FILTER retorna um array vazio e mostra como corrigir cada causa.

Principais Conclusões: Por que FILTER Retorna Vazio e Como Corrigir

  • Verifique a sintaxe do argumento include: Um sinal de igual ausente ou operador errado no teste lógico faz com que FILTER não encontre correspondências.
  • Confira se os tipos de dados são compatíveis: Números armazenados como texto ou espaços extras impedem que o teste lógico seja avaliado como VERDADEIRO.
  • Use o argumento if_empty: Adicione um terceiro argumento ao FILTER para exibir uma mensagem personalizada em vez do erro #CALC!.

ADVERTISEMENT

Por que FILTER Retorna um Array Vazio em Vez de Dados

A sintaxe da função FILTER é FILTER(array; include; [if_empty]). O argumento include deve ser uma matriz booleana — uma matriz de valores VERDADEIRO e FALSO — que tenha o mesmo número de linhas que o argumento array. Quando todos os valores na matriz include são FALSO, FILTER não tem linhas para retornar e produz um array vazio. No Excel 365 e Excel 2021, esse array vazio é exibido como o erro #CALC!. Em versões anteriores que suportam arrays dinâmicos, pode aparecer como uma célula em branco ou erro de transbordamento.

As causas mais comuns para uma matriz include totalmente FALSA são:

  • Teste lógico incorreto: Usar um único sinal de igual em vez de igual duplo, ou usar o operador de comparação errado.
  • Incompatibilidade de tipo de dados: Comparar números com strings de texto, ou datas com texto que se parece com datas.
  • Caracteres ocultos ou extras: Espaços iniciais, espaços finais ou caracteres não imprimíveis nos dados de origem.
  • Problemas com intervalo de transbordamento: O argumento include referencia um intervalo que não está alinhado com o argumento array.

Passos para Identificar e Corrigir o Problema de Array Vazio

  1. Verifique o tamanho do intervalo do argumento include
    Selecione a célula com a fórmula FILTER. Pressione F2 para entrar no modo de edição. Destaque o argumento include (o segundo argumento dentro de FILTER). Pressione F9 para avaliar essa parte da fórmula. Se o resultado for {FALSO;FALSO;FALSO;...}, então todas as linhas falharam no teste. Pressione Escape para sair do modo de edição sem salvar a alteração.
  2. Teste a condição lógica em uma única célula
    Em uma coluna em branco, insira uma fórmula que replique o teste lógico para a primeira linha de dados. Por exemplo, se seu FILTER usa A2:A100="Produto X", insira =A2="Produto X" na célula Z2. Arraste para baixo para ver quais linhas retornam VERDADEIRO. Se nenhuma retornar VERDADEIRO, a condição em si está errada ou os dados não contêm esse valor.
  3. Verifique espaços iniciais e finais
    Em uma coluna auxiliar, use =ARRUMAR(A2) e compare o resultado com a célula original. Se forem diferentes, a célula original contém espaços extras. Use =ARRUMAR() dentro da fórmula FILTER: FILTER(array; ARRUMAR(A2:A100)="Produto X").
  4. Converta números em formato de texto para números reais
    Se você está comparando uma coluna numérica, certifique-se de que as células de origem são números, não texto. Use a função VALOR: FILTER(array; VALOR(B2:B100)>100). Alternativamente, selecione a coluna, vá em Dados > Texto para Colunas e clique em Concluir para converter texto em números.
  5. Use o argumento if_empty para exibir uma mensagem amigável
    Adicione um terceiro argumento ao FILTER: FILTER(array; include; "Nenhum registro encontrado"). Isso substitui o erro #CALC! pelo seu texto personalizado, confirmando que a fórmula funciona mas não encontrou correspondências.
  6. Verifique linhas ocultas ou filtros
    Se seus dados de origem têm um AutoFiltro aplicado, FILTER ainda avalia todas as linhas independentemente da visibilidade. Mas se você ocultou linhas manualmente, FILTER as vê. Remova quaisquer filtros no intervalo de origem para garantir que você veja todos os dados.

ADVERTISEMENT

Se FILTER Ainda Retornar Array Vazio Após a Correção Principal

FILTER retorna #CALC! mesmo quando o argumento include mostra valores VERDADEIRO

Isso geralmente acontece quando o argumento include referencia um intervalo de transbordamento que não foi totalmente calculado. Por exemplo, se include é D2# (um intervalo de transbordamento), e a fórmula de transbordamento ainda não transbordou ou tem um erro, FILTER vê uma matriz include vazia. Recalcule a pasta de trabalho pressionando Ctrl+Alt+F9. Se a fórmula de transbordamento retornar um erro, corrija esse erro primeiro.

FILTER funciona em uma pasta de trabalho mas não em outra

A função FILTER requer Excel 365 ou Excel 2021. Se você abrir a pasta de trabalho no Excel 2019 ou anterior, a fórmula retorna um erro #NOME? ou um array vazio. Verifique a versão do Excel: vá em Arquivo > Conta > Sobre o Excel. A versão deve ser 2016 ou posterior com uma assinatura Microsoft 365, ou Excel 2021 autônomo.

FILTER retorna vazio quando os dados de origem estão em uma Tabela

Tabelas do Excel usam referências estruturadas como Tabela1[Coluna1]. Se o nome da coluna da Tabela contiver um espaço, você deve colocá-lo entre colchetes: Tabela1[Nome da Coluna]. Um colchete ausente faz com que o argumento include seja avaliado como todo FALSO. Verifique a sintaxe da referência estruturada digitando =Tabela1[ e deixando o IntelliSense sugerir os nomes das colunas.

FILTER com Múltiplas Condições: Comportamento Esperado vs Array Vazio

Tipo de Condição Sintaxe Correta Por que Retorna Vazio
E (ambos devem ser verdadeiros) FILTER(array; (intervalo1="A")*(intervalo2="B")) Se qualquer intervalo não tiver valor correspondente, o produto é 0 (FALSO) para todas as linhas
OU (qualquer um pode ser verdadeiro) FILTER(array; (intervalo1="A")+(intervalo2="B")) Se nenhum intervalo tiver valor correspondente, a soma é 0 para todas as linhas
Comparação com referência de célula FILTER(array; intervalo1=$E$1) Se a célula E1 estiver vazia ou contiver um tipo de dado diferente, nenhuma linha corresponde

Ao combinar condições com multiplicação (E) ou adição (OU), coloque cada condição entre parênteses. Sem parênteses, o Excel pode interpretar os operadores incorretamente e produzir uma matriz toda FALSA.

Agora você pode diagnosticar e resolver resultados de array vazio do FILTER verificando o teste lógico, os tipos de dados e a sintaxe da fórmula. Comece avaliando o argumento include com F9, depois teste a condição em uma única coluna. Adicione o argumento if_empty para distinguir entre uma fórmula quebrada e uma ausência genuína de dados correspondentes. Para solução de problemas avançada, use a ferramenta Avaliar Fórmula na guia Fórmulas para percorrer cada cálculo.

ADVERTISEMENT