Análise de dados

Remover linhas em branco no Google Sheets (2026)

ModelMonkey12 de junho de 20267 min de leitura

Mas "remover" e "excluir" não são a mesma operação, e escolher a errada em um modelo com múltiplas abas pode custar uma tarde inteira de referências quebradas.

Por que linhas em branco são um problema de modelo financeiro, especificamente

A maioria dos guias sobre linhas em branco trata o assunto como uma chateação de formatação. Em FP&A, é uma questão de integridade de dados.

Uma exportação típica de ERP ou HubSpot insere linhas separadoras em branco entre seções. Seu SUMIFS passa a incluir esses espaços no intervalo de forma silenciosa, o que geralmente não causa problema. Mas no momento em que você usa algo sensível à posição, como INDEX ou OFFSET, ou quando tenta puxar dados limpos para outra aba com uma referência de intervalo, os brancos corrompem o resultado.

Um relatório trimestral para o conselho que puxa realizados de 3 abas, cada uma com 15 a 20 linhas separadoras espalhadas por 400 linhas de dados, vai produzir subtotais errados em cerca de 30% das vezes se as linhas em branco não forem tratadas. Esse número não vem de um estudo: é a taxa de falha aproximada que você pode esperar de SUMIFS que, sem querer, pula intervalos porque alguém filtrou em vez de remover.

Método 1: Fórmula FILTER (não-destrutiva, recomendada para modelos vinculados)

Se a fonte de dados é uma aba de importação, uma planilha compartilhada ou qualquer coisa com fórmulas que outras pessoas editam, não exclua linhas. Em vez disso, crie uma aba Dados_Limpos que remove os brancos via fórmula.

=FILTER('Exportacao_Bruta'!A2:G500, 'Exportacao_Bruta'!A2:A500<>"")

Isso retorna todas as linhas onde a coluna A não está vazia. É um array dinâmico: toda a saída vai para uma única célula da fórmula e se expande automaticamente conforme novas linhas são adicionadas.

Para casos em que uma linha é "em branco" somente se várias colunas-chave estiverem vazias (comum em exportações de transações onde alguns campos são opcionais):

=FILTER('Exportacao_Bruta'!A2:G500,
  ('Exportacao_Bruta'!A2:A500<>"") * ('Exportacao_Bruta'!C2:C500<>""))

A multiplicação funciona como E (AND): as duas condições precisam ser verdadeiras. Se você quiser OU (OR), ou seja, a linha é mantida se qualquer coluna-chave tiver dado:

=FILTER('Exportacao_Bruta'!A2:G500,
  ('Exportacao_Bruta'!A2:A500<>"") + ('Exportacao_Bruta'!C2:C500<>""))

Com uma aba limpa disponível, seus SUMIFS podem referenciá-la com segurança em todo o modelo:

=SUMIFS('Dados_Limpos'!D:D,
  'Dados_Limpos'!B:B, ">="&Premissas!$B$3,
  'Dados_Limpos'!B:B, "<="&Premissas!$C$3,
  'Dados_Limpos'!A:A, "Receita")

Sem lacunas. Sem deslocamento de posição. A aba de premissas continua controlando os limites de data.

Uma limitação importante: a partir de junho de 2026, FILTER não funciona entre arquivos separados do Google Sheets, apenas entre abas dentro da mesma planilha. Se os dados brutos estiverem em um arquivo diferente, você precisará de IMPORTRANGE primeiro e, em seguida, aplicar FILTER sobre o resultado.

Método 2: Ordenar e excluir (rápido, destrutivo, aceitável para limpezas pontuais)

Se os dados de origem são seus para modificar e você está fazendo uma limpeza única antes de construir o modelo, o truque de ordenação é o caminho mais rápido:

  1. Selecione o intervalo de dados (incluindo os cabeçalhos).
  2. Acesse Dados -> Ordenar intervalo -> Ordene pela coluna com maior probabilidade de estar vazia nas linhas em branco.
  3. Os brancos vão para o final.
  4. Selecione e exclua as linhas em branco no final.
  5. Reordene pela coluna que você realmente precisa.

Leva menos de 2 minutos em um conjunto de 500 linhas. O risco é evidente: você reordenou os dados permanentemente, e se qualquer outra parte da planilha referenciava números de linha específicos, essas referências agora estão erradas. Verifique os dependentes antes de ordenar (no Sheets, use Ctrl+H e pesquise pelo nome da aba para localizar referências diretas).

Método 3: Apps Script (para importações recorrentes)

Se você está puxando dados do HubSpot, Stripe ou qualquer fonte que despeja uma exportação nova toda semana com linhas em branco inconsistentes, vale a pena investir 15 minutos para configurar um Apps Script de limpeza com um clique. O script abaixo é executado na aba ativa:

function removerLinhasEmBranco() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  
  // Coleta índices de linhas para excluir (em ordem reversa para preservar a ordem dos índices)
  const linhasParaExcluir = [];
  for (let i = data.length - 1; i >= 1; i--) { // ignora o cabeçalho no índice 0
    // Uma linha é em branco se todas as células estiverem vazias ou nulas
    if (data[i].every(cell => cell === "" || cell === null)) {
      linhasParaExcluir.push(i + 1); // converte para número de linha base 1
    }
  }
  
  // Exclui as linhas coletadas
  linhasParaExcluir.forEach(row => sheet.deleteRow(row));
  
  SpreadsheetApp.getUi().alert(`${linhasParaExcluir.length} linhas em branco removidas.`);
}

Cole o código em Extensões -> Apps Script, salve e execute removerLinhasEmBranco. Se quiser acesso com um clique, adicione um botão à aba de importação via Inserir -> Desenho.

O script processa cerca de 1.000 linhas por segundo em uma instância típica do Sheets. Uma exportação de 5.000 linhas é limpa em menos de 6 segundos.

Comparativo: qual método usar em cada situação

CenárioMelhor método
Exportação de ERP/HubSpot, fonte compartilhada ou auditávelFórmula FILTER (não-destrutiva)
Limpeza única antes de construir o modeloOrdenar e excluir
Importação recorrente semanal com brancosApps Script
Dados limpos necessários em várias abas downstreamFórmula FILTER em uma aba dedicada Dados_Limpos
Linhas em branco definidas por múltiplas colunasFILTER com lógica de multiplicação/adição

A armadilha: linhas parcialmente em branco

Uma "linha em branco" nem sempre está completamente vazia. Em um modelo de headcount, a linha de um colaborador desligado pode ainda ter o nome na coluna A, mas os campos de remuneração nas colunas D a G completamente vazios. Seu FILTER na coluna A não vai capturar isso.

A solução é definir "em branco" com base na coluna que direciona seus cálculos, não na coluna de rótulo:

=FILTER('Headcount'!A2:H200,
  'Headcount'!D2:D200<>"")

A coluna D aqui é o salário base. Se estiver vazia, a linha não tem relevância para o modelo de remuneração, independentemente do que está no campo de nome. Essa abordagem funciona bem em modelos de margem de contribuição, onde SKUs podem ter nome mas nenhum dado de receita, ou em modelos de pipeline onde negócios existem mas ainda não têm data de fechamento.

Se você está fazendo análise de sensibilidade de runway com base no ritmo de contratações e algumas linhas de headcount são condicionais (contratar só se o Series B fechar), filtre-as explicitamente em vez de deixar brancos:

=FILTER('Headcount'!A2:H200,
  ('Headcount'!D2:D200<>"") * ('Headcount'!G2:G200="Confirmado"))

A coluna G é o status da contratação. Apenas contratações confirmadas com dado de salário entram no modelo.

Onde o ModelMonkey se encaixa

Se você limpa importações desorganizadas com frequência antes de rodar análises, o assistente de IA do ModelMonkey consegue lidar com esse tipo de limpeza estrutural diretamente do painel lateral do Sheets: identifica padrões de linhas em branco, aplica a lógica de FILTER para criar uma aba de referência limpa e conecta tudo às suas fórmulas existentes. É mais rápido do que escrever o script quando você está no meio de um modelo e só precisa que os dados estejam limpos.

Escolha um plano do ModelMonkey - funciona tanto no Google Sheets quanto no Excel.