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.
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ário | Fórmula‑chave | O 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); " ") ) ) > 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); " ") ) ) > 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) > 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) > 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)>0); TRANSPOSTA(COLUNA(A5:D5)^0) ) > 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); " ") ) ) > 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
- Selecione sua tabela → Dados > De Tabela/Intervalo.
- Com a coluna desejada selecionada, aplique Transformar > Formatar > Limpar e Transformar > Formatar > Recortar (equivalente a Clean e Trim).
- Filtre linhas onde o comprimento > 0 (adicione uma coluna personalizada com Text.Length se necessário).
- 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 doTRIM
. - 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 |
---|---|---|
FILTER | FILTRAR | Requer matrizes dinâmicas (Microsoft 365/2021+). |
TRIM | ARRUMAR | Remove espaços extras nas bordas e reduz múltiplos internos a um. |
CLEAN | LIMPAR | Remove caracteres não imprimíveis. |
SUBSTITUTE | SUBSTITUIR | Troca ocorrências de texto, útil para NBSP e tabs. |
CHAR | CARACT | CHAR(160) = NBSP, CHAR(9) = tab. |
LEN | NÚM.CARACT | Comprimento do texto (conta espaços). |
SEQUENCE | SEQUÊNCIA | Gera sequências derramadas. |
INDEX | ÍNDICE | Com AGREGAR , cria listas compactadas. |
IFERROR | SEERRO | Tratamento de erros simples. |
AGGREGATE | AGREGAR | Funçõ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. CombineLIMPAR
eTRIM
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 doTRIM
.
Exemplos prontos para copiar (listas de uma coluna)
Filtrar ignorando apenas vazios reais (sem limpeza):
=FILTRAR(G5:G17; G5:G17<>"")
Filtrar ignorando células que tenham apenas espaços normais:
=FILTRAR(G5:G17; NÚM.CARACT(SUBSTITUIR(G5:G17; " "; "")) > 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); " ") ) ) > 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) > 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)>0); TRANSPOSTA(COLUNA(A5:D5)^0)) > 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); " "))) > 0);
LIN(A1)
)
);
"")
Checklist de diagnóstico rápido
- Confirme se os “brancos” têm comprimento > 0 com
NÚM.CARACT(célula)
. - Se > 0, valide o primeiro caractere com
CÓDIGO(ESQUERDA(célula;1))
para descobrir se é 32 (espaço), 160 (NBSP) ou 9 (tab). - Normalize com
SUBSTITUIR
→TRIM/ARRUMAR
. - Aplique
FILTRAR
com critérioNÚM.CARACT(textoLimpo)>0
. - 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.