Excel: remover células vazias (ou só com espaços) de intervalos dinâmicos [FILTER/FILTRAR, TRIM, LET]

Quer filtrar um intervalo dinâmico no Excel e “pular” as células vazias, mas o resultado continua trazendo linhas em branco? O problema quase sempre é que essas células não estão realmente vazias — elas carregam espaços (inclusive invisíveis). Veja como limpar e filtrar corretamente, em qualquer versão do Excel.

Índice

O problema: “vazio” não é o mesmo que “só com espaços”

No Excel, uma célula que contém apenas um espaço é texto de comprimento maior que zero. Isso significa que testes como <>"" (diferente de vazio) consideram essa célula como não vazia. Por isso, fórmulas do tipo FILTER(G5:G17; G5:G17<>"") (ou FILTRAR, nos Excels em português) falham quando existem espaços, espaços inquebráveis (NBSP) ou tabulações herdadas de importações.

Resumindo: antes de filtrar, limpe o intervalo removendo os caracteres de espaço e whitespace invisível.

Soluções rápidas (copiar e colar)

CenárioFórmula‑chaveO que faz
Células contêm apenas espaços=LET( t; SUBSTITUIR(F3; " "; ""); MID(t; SEQUENCE(NÚM.CARACT(t)); 1) )SUBSTITUIR remove os espaços; o texto “limpo” pode ser manipulado, re‑fragmentado ou validado. Útil para transformar conteúdo que tem apenas espaços.
Células realmente vazias=FILTER(G5:G17; G5:G17<>"")Filtra o intervalo ignorando apenas células verdadeiramente vazias. Funciona com matrizes dinâmicas (Microsoft 365/Excel 2021+).
Combinação robusta (espaços, NBSP, tabs)=FILTER(G5:G17; LEN( TRIM( SUBSTITUIR(SUBSTITUIR(G5:G17; CARACT(160); " "); CARACT(9); " ") ) ) > 0 )Converte NBSP (CARACT(160)) e tab (CARACT(9)) em espaço comum, aplica TRIM e retém apenas células com conteúdo visível.

Dica de idioma: em instalações em português, as funções podem aparecer como FILTRAR (FILTER), ARRUMAR (TRIM), LIMPAR (CLEAN), SUBSTITUIR (SUBSTITUTE), CARACT (CHAR), NÚM.CARACT (LEN), SEQUÊNCIA (SEQUENCE), ÍNDICE (INDEX), SEERRO (IFERROR) e AGREGAR (AGGREGATE). Se o seu Excel usa vírgula como separador, troque ; por ,.

Passo a passo: limpando e filtrando um intervalo dinâmico

Exemplo de dados

Suponha que G5:G17 contenha valores misturados: nomes válidos, células vazias e células “em branco” que, na verdade, têm espaços ou NBSP.

Etapa 1 — Normalizar espaços invisíveis

Converta NBSP (CARACT(160)) e tabulações (CARACT(9)) para espaço comum, depois aplique TRIM/ARRUMAR:

=TRIM( SUBSTITUIR( SUBSTITUIR(G5:G17; CARACT(160); " "); CARACT(9); " " ) )

Etapa 2 — Filtrar apenas as células com conteúdo “visível”

Agora use o resultado limpo como critério. A versão em inglês:

=FILTER( G5:G17; LEN( TRIM( SUBSTITUIR(SUBSTITUIR(G5:G17; CHAR(160); " "); CHAR(9); " ") ) ) &gt; 0 )

Versão com nomes em português (mantendo TRIM se preferir):

=FILTRAR( G5:G17; NÚM.CARACT( TRIM( SUBSTITUIR(SUBSTITUIR(G5:G17; CARACT(160); " "); CARACT(9); " ") ) ) &gt; 0 )

Etapa 3 — Clareza e desempenho com LET

Evite recalcular expressões longas usando LET. Você pode filtrar e, se quiser, devolver já o texto limpo:

=LET(
  src; G5:G17;
  limpo; TRIM( SUBSTITUIR( SUBSTITUIR(src; CARACT(160); " "); CARACT(9); " ") );
  FILTRAR( limpo; NÚM.CARACT(limpo) &gt; 0 )
)

Se preferir retornar o conteúdo original (sem alterar), apenas mude o primeiro argumento do FILTRAR para src e mantenha limpo no critério:

=LET(
  src; G5:G17;
  limpo; TRIM( SUBSTITUIR( SUBSTITUIR(src; CARACT(160); " "); CARACT(9); " ") );
  FILTRAR( src; NÚM.CARACT(limpo) &gt; 0 )
)

Casos especiais que pegam muita gente

Células com fórmula que retornam ""

Uma célula cujo resultado é "" (string vazia) não é nula, porém NÚM.CARACT("") é 0. Assim, o critério com NÚM.CARACT(TRIM(...))>0 continua válido e ignora essas células. Já um teste simples <>"" não distingue espaços invisíveis — por isso falha em muitos cenários.

Remover todos os espaços (inclusive internos)

TRIM/ARRUMAR remove espaços extras nas extremidades e condensa múltiplos espaços internos em um só, mas não remove todos. Para remover todos os espaços (inclusive entre palavras), use SUBSTITUIR(texto; " "; "") e, se necessário, encadeie com NBSP e tab:

=SUBSTITUIR( SUBSTITUIR( SUBSTITUIR(A1; " "; ""); CARACT(160); ""); CARACT(9); "")

Detectar rapidamente se o “espaço” é NBSP

Use CODE/CÓDIGO no primeiro caractere para conferir:

=CÓDIGO(ESQUERDA(A1;1))   

Se voltar 160, é NBSP.

Múltiplas colunas: filtrar linhas com qualquer conteúdo visível

Para uma tabela em A5:D17, você pode filtrar linhas inteiras quando qualquer coluna tiver conteúdo após limpeza. A técnica abaixo cria um vetor lógico por linha com MMULT:

=LET(
  rng; A5:D17;
  limpo; TRIM( SUBSTITUIR( SUBSTITUIR(rng; CARACT(160); " "); CARACT(9); " ") );
  linhasComConteudo; MMULT( --(NÚM.CARACT(limpo)&gt;0); TRANSPOSTA(COLUNA(A5:D5)^0) ) &gt; 0;
  FILTRAR( rng; linhasComConteudo )
)

Como funciona? NÚM.CARACT(limpo)>0 vira 1/0 por célula; o vetor COLUNA(A5:D5)^0 gera um “peso” 1 para cada coluna; MMULT soma por linha e o teste >0 indica se há conteúdo em qualquer coluna.

Excel sem matrizes dinâmicas (2010/2013/2016)

Sem FILTER/FILTRAR, você consegue “compactar” a lista com ÍNDICE + AGREGAR + SEERRO. Copie a fórmula para baixo até retornar células vazias:

=SEERRO(
  ÍNDICE($G$5:$G$17;
    AGREGAR(15; 6;
      (LIN($G$5:$G$17)-LIN($G$5)+1)/
      ( NÚM.CARACT( TRIM( SUBSTITUIR(SUBSTITUIR($G$5:$G$17; CARACT(160); " "); CARACT(9); " ") ) ) &gt; 0 );
      LIN(A1)
    )
  );
"")

O truque está em transformar o critério “tem conteúdo visível” em um vetor de divisões válidas para o AGREGAR (função 15 = SMALL/k‑ésimo menor).

Power Query (Obter & Transformar): alternativa sem fórmulas

  1. Selecione sua tabela → Dados > De Tabela/Intervalo.
  2. Com a coluna desejada selecionada, aplique Transformar > Formatar > Limpar e Transformar > Formatar > Recortar (equivalente a Clean e Trim).
  3. Filtre linhas onde o comprimento > 0 (adicione uma coluna personalizada com Text.Length se necessário).
  4. Clique em Fechar & Carregar para derramar o resultado limpo.

Dicas práticas e boas práticas

  • Use LET para legibilidade e performance: nomeie subexpressões (ex.: src, limpo).
  • Evite intervalos muito grandes: referenciar colunas inteiras aumenta o custo de cálculo.
  • Conferir separador regional: se seu Excel usa vírgula, troque ; por ,.
  • #SPILL! / #DERRAMAMENTO!: verifique se há células ocupadas na área onde a matriz deve “derramar”.
  • Importações da web tendem a trazer NBSP; normalize com SUBSTITUIR( ; CARACT(160); " " ) antes do TRIM.
  • Dados numéricos como texto: após limpar, use VALOR para converter números armazenados como texto.
  • Depuração com F9: selecione subtrechos da fórmula na barra de fórmulas e pressione F9 para ver o resultado parcial.

Mapeamento rápido de funções (EN ↔ PT)

Inglês (EN)Português (PT/BR)Observações
FILTERFILTRARRequer matrizes dinâmicas (Microsoft 365/2021+).
TRIMARRUMARRemove espaços extras nas bordas e reduz múltiplos internos a um.
CLEANLIMPARRemove caracteres não imprimíveis.
SUBSTITUTESUBSTITUIRTroca ocorrências de texto, útil para NBSP e tabs.
CHARCARACTCHAR(160) = NBSP, CHAR(9) = tab.
LENNÚM.CARACTComprimento do texto (conta espaços).
SEQUENCESEQUÊNCIAGera sequências derramadas.
INDEXÍNDICECom AGREGAR, cria listas compactadas.
IFERRORSEERROTratamento de erros simples.
AGGREGATEAGREGARFunções estatísticas com opções de ignorar erros/linhas ocultas.

Erros comuns e como depurar

  • “Minha fórmula continua trazendo linhas vazias” — Verifique se o critério usa NÚM.CARACT(TRIM(...))>0. Testes como <>"" não capturam NBSP ou tab.
  • “Tudo virou vazio” — É possível que LIMPAR tenha removido caracteres úteis. Combine LIMPAR e TRIM com cuidado.
  • “A lista não derrama” — Existe conteúdo bloqueando a área de derramamento. Apague ou mova.
  • “Separador errado” — Em muitos Excels em PT, o separador é ;. Se usar ,, a fórmula pode quebrar.
  • “NBSP de HTML” — Quase sempre aparece ao colar de páginas web. Limpe com SUBSTITUIR( ; CARACT(160); " ") antes do TRIM.

Exemplos prontos para copiar (listas de uma coluna)

Filtrar ignorando apenas vazios reais (sem limpeza):

=FILTRAR(G5:G17; G5:G17&lt;&gt;"")

Filtrar ignorando células que tenham apenas espaços normais:

=FILTRAR(G5:G17; NÚM.CARACT(SUBSTITUIR(G5:G17; " "; "")) &gt; 0)

Filtrar ignorando espaços, NBSP e tab (versão robusta):

=FILTRAR(
  G5:G17;
  NÚM.CARACT( TRIM( SUBSTITUIR(SUBSTITUIR(G5:G17; CARACT(160); " "); CARACT(9); " ") ) ) &gt; 0
)

Aplicar limpeza e devolver já o conteúdo higienizado:

=LET(
  src; G5:G17;
  limpo; TRIM(SUBSTITUIR(SUBSTITUIR(src; CARACT(160); " "); CARACT(9); " "));
  FILTRAR(limpo; NÚM.CARACT(limpo) &gt; 0)
)

Exemplos prontos para copiar (tabelas com várias colunas)

Filtrar linhas onde qualquer coluna tenha conteúdo visível após limpeza:

=LET(
  rng; A5:D17;
  limpo; TRIM(SUBSTITUIR(SUBSTITUIR(rng; CARACT(160); " "); CARACT(9); " "));
  linhasComConteudo; MMULT(--(NÚM.CARACT(limpo)&gt;0); TRANSPOSTA(COLUNA(A5:D5)^0)) &gt; 0;
  FILTRAR(rng; linhasComConteudo)
)

Para versões antigas (sem FILTRAR)

Compactar lista com ÍNDICE+AGREGAR:

=SEERRO(
  ÍNDICE($G$5:$G$17;
    AGREGAR(15; 6;
      (LIN($G$5:$G$17)-LIN($G$5)+1)/
      (NÚM.CARACT(TRIM(SUBSTITUIR(SUBSTITUIR($G$5:$G$17; CARACT(160); " "); CARACT(9); " "))) &gt; 0);
      LIN(A1)
    )
  );
"")

Checklist de diagnóstico rápido

  1. Confirme se os “brancos” têm comprimento > 0 com NÚM.CARACT(célula).
  2. Se > 0, valide o primeiro caractere com CÓDIGO(ESQUERDA(célula;1)) para descobrir se é 32 (espaço), 160 (NBSP) ou 9 (tab).
  3. Normalize com SUBSTITUIRTRIM/ARRUMAR.
  4. Aplique FILTRAR com critério NÚM.CARACT(textoLimpo)>0.
  5. Se necessário, transforme para número com VALOR.

Conclusão

O segredo para “remover células vazias” em intervalos dinâmicos no Excel é distinguir vazio real de célula com whitespace. Limpe primeiro (com SUBSTITUIR, TRIM/ARRUMAR, LIMPAR) e só então aplique FILTER/FILTRAR — ou, em versões antigas, a combinação ÍNDICE + AGREGAR. Com isso, você elimina os “pseudoblanks”, mantém apenas conteúdo visível e ganha fórmulas previsíveis e fáceis de manter.

Resumo em uma linha: Limpe → Meça o comprimento → Filtre.

Índice