mygems

Por que o Excel trava em arquivos grandes e o que fazer no lugar

Não responde, congela ao rolar, fecha ao salvar. A causa costuma ser memória, recálculo e formatação, não o número de linhas. Veja como descobrir qual é.

Por uos ·

O Excel raramente trava porque um arquivo tem linhas demais. Ele trava por causa do que existe nessas linhas.

Uma planilha de 900.000 linhas só com valores abre sem problema num notebook de 2015. Uma planilha de 40.000 linhas com formatação condicional aplicada a colunas inteiras, alguns milhares de PROCV (VLOOKUP) e um cache de tabela dinâmica deixa a mesma máquina totalmente travada. O número de linhas é o que você percebe; quase nunca é a causa.

Então a pergunta útil é qual das cinco causas é a sua, porque cada uma tem uma solução diferente e quatro delas levam menos de um minuto.

As cinco causas, por ordem de probabilidade

1. Acabou a memória (e talvez você esteja no Excel de 32 bits)

O Excel carrega a pasta de trabalho inteira na RAM, mais a cadeia de cálculo, o histórico de desfazer e um cache por tabela dinâmica, muitas vezes várias vezes o tamanho do arquivo no disco.

Confira primeiro a sua versão: Arquivo → Conta → Sobre o Excel. Se a primeira linha disser 32 bits, o Excel fica limitado a cerca de 2 GB de memória não importa quanta a máquina tenha, e essa é a sua resposta. A Microsoft entregou a versão de 32 bits como padrão por anos, e muitas instalações nunca foram trocadas. Reinstalar em 64 bits é, para quem se aplica, a correção de maior valor desta página.

O sinal de problema de memória: «Não é possível concluir esta tarefa com os recursos disponíveis», ou um travamento justamente ao salvar ou ao abrir uma segunda pasta de trabalho.

2. Fórmulas voláteis recalculam tudo, o tempo todo

Algumas funções são recalculadas a cada alteração em qualquer lugar da pasta de trabalho, não só quando as entradas mudam. NOW() (AGORA), TODAY() (HOJE), RAND() (ALEATÓRIO), OFFSET() (DESLOC), INDIRECT() (INDIRETO), INFO() e CELL() (CÉL) são as voláteis, e cada uma arrasta junto tudo o que depende dela.

INDIRECT() costuma ser a culpada numa pasta de trabalho lenta, e OFFSET() numa que se tornou inutilizável. Algumas centenas de qualquer uma delas numa planilha grande bastam para que cada tecla pressionada dispare um recálculo completo.

Dá para diagnosticar em dez segundos: Fórmulas → Opções de Cálculo → Manual. Se a pasta de trabalho passar a responder na hora, o problema era o recálculo, e não o tamanho.

As correções, por ordem de preferência: troque OFFSET/INDIRECT por INDEX, troque VLOOKUP sobre uma coluna inteira por INDEX/MATCH ou XLOOKUP sobre um intervalo delimitado, e nunca referencie A:A quando A1:A50000 resolve. Uma referência a coluna inteira é uma varredura de um milhão de células por fórmula.

3. Formatação aplicada a colunas inteiras

Selecione a coluna A, aplique formatação condicional ou uma cor de preenchimento, e o Excel pode guardar o estado de formatação de um milhão de células. Faça isso em uma dúzia de colunas e o arquivo incha. Pastas de trabalho de 40 MB com 5.000 linhas de dados são comuns, e abrem como se tivessem um milhão.

Dois sinais:

  • Ctrl+End pula para um lugar absurdo (linha 900.000, coluna BZ) quando seus dados terminam na linha 5.000. Esse é o intervalo usado, e o Excel aloca memória com base nele.
  • O arquivo é enorme em relação ao conteúdo.

A correção: selecione todas as linhas abaixo dos seus dados até o final, exclua as linhas (não só o conteúdo), faça o mesmo com as colunas à direita, salve, feche e abra de novo. Ctrl+End agora deve cair na última célula de verdade. Em seguida, reaplique a formatação condicional ao intervalo real em vez de colunas inteiras.

4. Um cache por tabela dinâmica

Cada tabela dinâmica guarda a sua própria cópia dos dados de origem, a menos que compartilhe explicitamente um cache com outra. Cinco tabelas dinâmicas sobre uma origem de 200.000 linhas são um milhão de linhas de duplicação escondida dentro do arquivo.

A correção: crie as tabelas dinâmicas adicionais copiando uma existente, em vez de começar do zero a partir da origem, porque as cópias compartilham o cache. E, em Opções da Tabela Dinâmica, desative «Salvar dados de origem com o arquivo» sempre que possível.

5. No fim das contas, é o número de linhas

Se o arquivo é um CSV com vários milhões de linhas, nada do que foi dito se aplica. O Excel comporta 1.048.576 linhas por planilha, e isso é estrutural. Ele não vai travar, a rigor; vai carregar o que couber e parar, o que é pior. Como abrir um arquivo CSV grande que o Excel não abre é o guia específico para isso, e como abrir um arquivo CSV de 1 GB compara o que dá conta dele no lugar.

Descobrindo qual é a sua

Dois minutos, nesta ordem:

  1. Arquivo → Conta → Sobre o Excel. 32 bits? Pare aqui; essa é a correção.
  2. Ctrl+End. Cai muito além dos seus dados? Causa 3.
  3. Fórmulas → Opções de Cálculo → Manual. Respondeu? Causa 2.
  4. Compare o tamanho do arquivo com o conteúdo. Um arquivo de 30 MB com 8.000 linhas é causa 3 ou 4.
  5. Nenhuma das anteriores, e o arquivo tem milhões de linhas? Causa 5. O Excel é a ferramenta errada aqui, não uma ferramenta quebrada.

Descarte os suplementos separadamente. Inicie o Excel com excel /safe. Se a pasta de trabalho se comportar bem, um suplemento era o responsável, e nada do resto importa.

O que fazer no lugar

Se é um arquivo de dados e não um documento. O padrão que derruba as pessoas é usar uma planilha como banco de dados: centenas de milhares de linhas, colunas de fórmulas calculadas sobre todas elas e uma tabela dinâmica por cima. Essa carga pede um mecanismo de consulta:

duckdb -c "SELECT region, SUM(amount) FROM 'export.csv' GROUP BY region"

O DuckDB responde em cerca de um segundo o que o Excel leva dois minutos e um travamento para fazer, e a sintaxe é mais simples que um SUMIFS aninhado. Há um passo a passo mais completo em executar consultas SQL em um CSV sem banco de dados.

Se você precisa continuar no Excel. O Power Query (Dados → Obter Dados) processa o arquivo inteiro e entrega só o resumo na planilha, então milhões de linhas nunca ocupam uma planilha. O Modelo de Dados lida com mais linhas do que uma planilha comporta e permite rodar tabelas dinâmicas diretamente sobre ele.

Se você só precisa ler o arquivo. Abrir um arquivo de dados em algo que o trate como dados, e não como documento, elimina as cinco causas de uma vez:

CSV File Viewer - Smart CSViPhone e iPad · Android

Lê o arquivo em vez de importá-lo: sem recálculo, sem estado de formatação, sem caches de tabela dinâmica. SQL ou perguntas em linguagem natural sobre os valores como foram escritos.

O que ele faz

Dois hábitos que evitam a maior parte disso

Separe os valores da apresentação. Uma planilha de dados brutos, sem formatação e sem fórmulas, e uma planilha de análise que referencia a primeira. A maioria das pastas de trabalho catastróficas é uma planilha só fazendo os três trabalhos.

Referencie intervalos, não colunas. A1:A50000 em vez de A:A, em todo lugar. É o hábito de maior efeito para que uma pasta de trabalho continue utilizável conforme cresce.

Perguntas

Por que o Excel fica dizendo «não está respondendo» num arquivo grande?
Em geral é o recálculo, não o tamanho. Funções voláteis (DESLOC, INDIRETO, AGORA, HOJE, ALEATÓRIO) são recalculadas a cada alteração em qualquer lugar da pasta de trabalho, e referências a colunas inteiras como A:A fazem cada fórmula varrer um milhão de células. Mude para Fórmulas → Opções de Cálculo → Manual; se passar a responder na hora, essa era a causa.
Meu Excel é de 32 bits, e isso importa?
Confira em Arquivo → Conta → Sobre o Excel. Uma versão de 32 bits fica limitada a cerca de 2 GB de memória, independentemente da RAM da máquina, então falha em pastas de trabalho que uma de 64 bits abre com facilidade. A Microsoft usou 32 bits como padrão por anos, por isso muitas instalações ainda estão nela. Reinstalar em 64 bits é a maior correção individual para quem se aplica.
Por que meu arquivo do Excel é tão grande se tem tão poucos dados?
Quase sempre por formatação aplicada a colunas inteiras, o que faz o Excel guardar o estado de um milhão de células por coluna. Pressione Ctrl+End: se pular muito além dos seus dados reais, esse é o intervalo usado inflado. Exclua as linhas e colunas vazias depois dos seus dados, salve, feche e abra de novo.
O Excel trava por causa do limite de 1.048.576 linhas?
Não. Esse limite não causa travamento. O Excel carrega as linhas que cabem e para, muitas vezes sem um aviso claro, o que é mais perigoso do que travar, porque os totais que você lê depois ficam errados sem ninguém notar. Travamentos e congelamentos vêm de memória, recálculo, formatação ou caches de tabela dinâmica.
Como evito que tabelas dinâmicas inflem uma pasta de trabalho?
Cada tabela dinâmica mantém a sua própria cópia dos dados de origem, a menos que compartilhe um cache. Crie novas tabelas dinâmicas copiando uma existente, em vez de recomeçar a partir da origem, e desative «Salvar dados de origem com o arquivo» em Opções da Tabela Dinâmica quando o seu fluxo de trabalho permitir.
O que devo usar no lugar do Excel para arquivos de dados grandes?
Para fazer perguntas aos dados, o DuckDB consulta um CSV no próprio arquivo em cerca de um segundo, sem etapa de importação. Para continuar no Excel, o Power Query e o Modelo de Dados processam muito mais linhas do que uma planilha comporta e entregam só o resumo na planilha. Para apenas ler um arquivo grande, use um visualizador que o trate como dados, e não como documento.

uos — Cria o CSV Editor e o Smart CSV Viewer e já gastou mais tempo do que pretendia descobrindo qual parte de uma pasta de trabalho estava causando o problema.