Para um modelo de três demonstrativos ou um DCF com abas vinculadas para apresentação a investidores, essa confiabilidade não é um diferencial: é a diferença entre um modelo que passa pela auditoria com folga e um que trava no slide 3 do board pack.
O que o ARRAYFORMULA faz de verdade
Uma fórmula padrão em B2 avalia apenas B2. Copie-a até B2:B5001 e você terá 5.000 células individuais, cada uma um ponto potencial de divergência caso alguém edite a linha 847 sem perceber.
O ARRAYFORMULA envolve essa fórmula única e a propaga por um intervalo inteiro. O resultado: uma fórmula, uma fonte de verdade, uma célula para atualizar.
// Abordagem padrão - 5.000 células, 5.000 pontos de falha
B2: =IF(A2="Receita", C2*Premissas!$B$4, 0)
... copiada até B5001
// ARRAYFORMULA - uma célula, coluna inteira
B2: =ARRAYFORMULA(IF(A2:A="Receita", C2:C*Premissas!$B$4, 0))
O intervalo aberto A2:A significa que a fórmula cobre automaticamente qualquer linha adicionada abaixo, o que é essencial quando sua fonte de dados é um feed ao vivo do ERP ou uma exportação mensal que cresce a cada fechamento contábil.
ARRAYFORMULA entre abas em modelos com múltiplas abas
Onde o ARRAYFORMULA realmente se paga em modelos sérios é nos lookups entre abas. Você precisa da margem de contribuição por SKU na aba de Análise de Devoluções, puxando dados do DRE e da aba de Premissas ao mesmo tempo.
// Devoluções!D2 - lucro bruto por linha de produto, coluna inteira em uma fórmula
=ARRAYFORMULA(
SUMIFS('DRE'!E:E, 'DRE'!B:B, 'Devoluções'!A2:A, 'DRE'!C:C, ">=" & Premissas!$B$3)
- SUMIFS('DRE'!F:F, 'DRE'!B:B, 'Devoluções'!A2:A, 'DRE'!C:C, ">=" & Premissas!$B$3)
)
Essa fórmula puxa receita e CMV da aba DRE, filtra por linha de produto e data-base das Premissas, e retorna toda a coluna de lucro bruto em uma única fórmula. Se a sua aba de DRE ganhar 12 novos SKUs no próximo trimestre, a fórmula os captura automaticamente.
Para análise de sensibilidade de runway em diferentes ritmos de contratação, o mesmo padrão se aplica:
// Headcount!G2 - queima acumulada em cada cenário de quadro
=ARRAYFORMULA(
MMULT(
Cenários!$C$2:$E$13, // 12 meses × 3 cenários
TRANSPOSE(Premissas!$D$5:$D$7) // custo total por cargo
) + SUMIF('Custos Fixos'!A:A, "Overhead", 'Custos Fixos'!C:C)
)
O que funciona e o que não funciona
Nem toda função responde ao ARRAYFORMULA. A tabela abaixo teria me poupado duas horas da primeira vez que tentei encapsular um VLOOKUP com ele.
| Função | Compatível com ARRAYFORMULA | Observações |
|---|---|---|
IF | ✅ Sim | Caso de uso principal |
SUMIFS | ✅ Sim | Retorna array de somas |
IFERROR | ✅ Sim | Encapsula o intervalo inteiro |
TEXT, VALUE, LEN | ✅ Sim | Funções de texto e matemáticas padrão |
VLOOKUP | ⚠️ Parcial | Funciona, mas costuma perder as últimas linhas; prefira INDEX/MATCH |
INDEX/MATCH | ✅ Sim | Preferido para lookups em array |
UNIQUE | ❌ Não | Já opera em contexto de array; aninhar gera erros |
FILTER | ❌ Não | Mesmo caso: é uma função de array nativa |
SORT | ❌ Não | Mesmo caso |
QUERY | ❌ Não | Não compatível |
Em julho de 2026, a documentação oficial do Google Sheets confirma que funções descritas como "retornam um array" já operam em contexto de array e não aceitam o encapsulamento.
Performance do ARRAYFORMULA em escala no Google Sheets
O Google Sheets tem limite de 10 milhões de células. Uma aba de detalhamento do razão contábil com 50.000 linhas e 20 colunas de classificações via ARRAYFORMULA está bem dentro desse limite, mas o tempo de recálculo é a restrição real.
Na prática, um ARRAYFORMULA bem estruturado em 50.000 linhas com 2 a 3 referências entre abas leva de 3 a 8 segundos para recalcular na planilha inteira. As mesmas 50.000 fórmulas individuais costumam levar de 45 a 90 segundos, e às vezes travam a aba por completo.
Os ganhos de performance vêm de algumas escolhas estruturais:
Use intervalos de coluna abertos com moderação. A2:A é conveniente, mas força o Sheets a avaliar a coluna inteira a cada recálculo. Se o seu conjunto de dados tem tamanho definido, por exemplo 5.000 linhas em uma aba de realizados do trimestre, use A2:A5001 explicitamente.
Evite aninhar ARRAYFORMULA dentro de outro ARRAYFORMULA. Um encapsulamento externo é suficiente. Aninhar é redundante e desacelera a avaliação.
Mantenha a fórmula em uma célula, sem envolver uma coluna auxiliar. Colunas auxiliares que alimentam outro ARRAYFORMULA são aceitáveis. Mas usar ARRAYFORMULA para produzir uma coluna e depois encapsulá-la em um segundo ARRAYFORMULA em outra coluna dobra o custo de recálculo sem nenhum benefício.
O padrão que quebra modelos
Um erro de R$ 1,2 milhão no fechamento do terceiro trimestre de um board pack que acompanhei veio exatamente disso: um SUMIFS sem ARRAYFORMULA em uma aba de resumo, buscando valores de uma aba de detalhamento onde alguém tinha digitado manualmente em 3 linhas no meio da coluna. O intervalo da fórmula parou na linha acima da entrada manual. Ninguém percebeu até que um cálculo de covenant bancário resultou em um número errado.
O ARRAYFORMULA não impede completamente entradas manuais, mas torna a violação visível. Quando uma única fórmula governa a coluna inteira, uma entrada manual nessa coluna gera um conflito explícito (#REF! ou a sobreposição quebra silenciosamente o padrão da fórmula). Isso aparece. A divergência silenciosa de uma cópia de 5.000 linhas não aparece.
Quando usar ARRAYFORMULA, QUERY ou funções de array nativas
A escolha depende do que você está fazendo com os dados.
ARRAYFORMULA é a ferramenta certa quando você precisa aplicar um cálculo ou uma classificação a cada linha de uma coluna: categorização de receita, custo total por linha de headcount, flags de variação período a período.
QUERY (exclusivo do Google Sheets) é melhor para agregações e filtros onde você escreveria uma pilha de SUMIFS e COUNTIFS aninhados. A sintaxe se parece com SQL e lida bem com agrupamentos, mas é mais lenta em intervalos grandes e não é compatível com ARRAYFORMULA.
Funções de array nativas (FILTER, UNIQUE, SORT, SEQUENCE) são desenvolvidas para usos específicos e mais rápidas nas suas funções. Se você precisa extrair uma lista única de centros de custo de um razão com 20.000 linhas, UNIQUE('Razão'!B2:B) supera qualquer alternativa construída com ARRAYFORMULA.
A divisão prática para um modelo de três demonstrativos: ARRAYFORMULA governa as colunas de classificação e cálculo linha a linha, as funções nativas tratam lookups de resumo e listas únicas, e o QUERY cuida de agregações ad hoc que você faria em uma tabela dinâmica.
Para escrever padrões complexos de ARRAYFORMULA entre abas com rapidez, o ModelMonkey monta a fórmula na barra lateral a partir de uma descrição em linguagem simples do que você precisa. Útil quando você está três abas dentro de um LBO de 12 abas e não quer ficar mentalmente contando deslocamentos de coluna para montar a fórmula do zero.