Análise de dados

ARRAYFORMULA no Google Sheets: Guia para Modelos Financeiros

ModelMonkey12 de julho de 20267 min de leitura

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çãoCompatível com ARRAYFORMULAObservações
IF✅ SimCaso de uso principal
SUMIFS✅ SimRetorna array de somas
IFERROR✅ SimEncapsula o intervalo inteiro
TEXT, VALUE, LEN✅ SimFunções de texto e matemáticas padrão
VLOOKUP⚠️ ParcialFunciona, mas costuma perder as últimas linhas; prefira INDEX/MATCH
INDEX/MATCH✅ SimPreferido para lookups em array
UNIQUE❌ NãoJá opera em contexto de array; aninhar gera erros
FILTER❌ NãoMesmo caso: é uma função de array nativa
SORT❌ NãoMesmo caso
QUERY❌ NãoNã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.