A página de ajuda do Google Docs Editors para ARRAYFORMULA resume a sintaxe em uma linha: ARRAYFORMULA(array_formula). Está correto. Mas representa aproximadamente 10% do que você precisa saber para construir um modelo financeiro de múltiplas abas com essa função.
A documentação descreve ARRAYFORMULA como uma função que "permite exibir valores retornados de uma fórmula de matriz em várias linhas e/ou colunas e usar funções que não são de matriz com matrizes." Também correto. O problema: ela não diz quais funções precisam do wrapper, quais falham silenciosamente dentro dele, nem como conectar a função entre abas sem travar a cadeia de cálculo do modelo.
Este artigo cobre exatamente essa lacuna.
O que a documentação oficial realmente cobre
A página de ajuda aborda bem três pontos:
- O atalho de teclado (
Ctrl+Shift+Enterno Windows,Cmd+Shift+Enterno Mac) envolve qualquer fórmula em ARRAYFORMULA automaticamente - A função opera com operadores aritméticos:
=ARRAYFORMULA(A2:A100 * B2:B100)multiplica duas colunas elemento a elemento - Funções nativas de array como
IF,LENe operadores matemáticos básicos não precisam do wrapper no Sheets atual
O terceiro ponto é importante e a documentação subestima. Conforme as notas de atualização do Google Workspace de 2023 e 2024, o Google expandiu o suporte à expansão automática de arrays para a maioria das funções do Sheets. =IF(A2:A100>0, "positivo", "negativo") já expande os resultados automaticamente sem ARRAYFORMULA. O wrapper hoje tem mais utilidade quando você precisa forçar uma função não-array a processar um intervalo, ou quando quer controle explícito sobre a forma da saída.
Funções que precisam (e não precisam) do wrapper ARRAYFORMULA
A documentação não oferece uma lista clara. Esta tabela resume o comportamento prático:
| Função | Precisa de ARRAYFORMULA? | Comportamento sem o wrapper |
|---|---|---|
IF | Não (Sheets atual) | Expande automaticamente ao receber um intervalo |
LEN, TRIM, UPPER | Não (Sheets atual) | Expande automaticamente |
SUMIF / SUMIFS | Sim, para retornar array | Retorna apenas um valor escalar; não produz resultado linha a linha |
COUNTIF / COUNTIFS | Sim, para retornar array | Mesmo comportamento do SUMIF |
VLOOKUP | Parcial (resultados imprevisíveis) | Frequentemente retorna só o primeiro resultado do intervalo |
INDEX/MATCH | Sim, para uso em array | Com ARRAYFORMULA, processa cada linha do intervalo de forma independente |
QUERY | Não | Já retorna array por design; wrapper não altera resultado |
IMPORTRANGE | Não | Já retorna array por design; wrapper adiciona overhead sem benefício |
UNIQUE, SORT, FILTER | Não | Funções nativas de array; operam sem wrapper |
Use esta tabela como referência rápida ao depurar um modelo que retorna um único valor onde você espera múltiplos resultados.
Onde ARRAYFORMULA realmente se justifica no trabalho de FP&A
O caso de uso honesto para ARRAYFORMULA em um modelo de múltiplas abas não é multiplicação de colunas. É agregação condicional e lookup entre abas que você quer manter em uma única célula, sem copiar a fórmula por 200 linhas.
Padrão 1: SUMIF em um intervalo de coluna inteira
A documentação oficial não menciona isso, mas SUMIF e SUMIFS não retornam arrays nativamente quando o intervalo de soma é uma coluna. O ARRAYFORMULA força a avaliação linha a linha.
=ARRAYFORMULA(
SUMIFS(
'DRE'!$D:$D,
'DRE'!$B:$B, Premissas!$B$3:$B$14,
'DRE'!$C:$C, ">=" & Premissas!$D$3
)
)
Essa fórmula fica em uma única célula na aba Resumo e retorna 12 valores, um por mês em Premissas!$B$3:$B$14. Sem copiar e colar, sem desalinhamento entre linhas, sem risco de a linha 9 referenciar um período diferente da linha 10.
Padrão 2: Classificação de texto com múltiplas condições
Classificar 500 lançamentos contábeis como COGS, OpEx ou abaixo da linha é trabalhoso de manter com IFs encadeados copiados por uma coluna. Uma célula com ARRAYFORMULA resolve:
=ARRAYFORMULA(
IF('Lançamentos'!C2:C="Custo de Receita", "COGS",
IF('Lançamentos'!C2:C="Vendas e Marketing", "S&M",
IF('Lançamentos'!C2:C="G&A", "G&A",
"Outros")))
)
Quando o time de finanças adiciona uma nova categoria contábil e a classificação quebra em 30 linhas, ela quebra em exatamente um lugar. Isso é a diferença entre uma correção de 2 minutos e uma auditoria de 20 minutos.
Padrão 3: Contagem dinâmica de linhas a partir de outra aba
A documentação não aborda esse cenário. Se a sua aba de receita tem um número variável de SKUs que muda a cada trimestre, fixar A2:A100 cria linhas mortas ou dados truncados. O contorno:
=ARRAYFORMULA(
IF(
'Receita'!A2:A = "",
"",
'Receita'!B2:B * Premissas!$C$4
)
)
A proteção IF(...="", "") é o padrão que a documentação nunca mostra. Sem ela, o ARRAYFORMULA preenche cada linha vazia da coluna com um resultado, o que compromete o desempenho em abas com 10.000 linhas potenciais.
O que ARRAYFORMULA não faz (mas você vai tentar mesmo assim)
A página de ajuda do Google não lista limitações. Existem várias.
VLOOKUP não funciona dentro de ARRAYFORMULA do jeito que você esperaria. Se você escrever =ARRAYFORMULA(VLOOKUP(A2:A100, 'Tabelas'!$A:$B, 2, 0)), frequentemente retornará apenas o primeiro resultado ou exibirá erro. Use INDEX/MATCH:
=ARRAYFORMULA(
IFERROR(
INDEX('Tabelas'!$B:$B,
MATCH('Receita'!A2:A100, 'Tabelas'!$A:$A, 0)
),
0
)
)
QUERY e IMPORTRANGE não precisam e não se beneficiam de ARRAYFORMULA. Envolvê-los adiciona overhead sem alterar o resultado. A documentação oficial não avisa sobre isso.
Referências mistas quebram silenciosamente. Se o seu ARRAYFORMULA referencia uma célula fixa como $D$4 junto com um intervalo como C2:C, o Sheets transmite a célula fixa corretamente. Mas se você escrever D4 por engano (referência relativa), o Sheets vai deslocar a referência por linha durante a avaliação. Os resultados vão parecer plausíveis enquanto estão errados. Esse é o erro que mata o modelo. Audite com Ctrl+~ (modo de exibição de fórmulas) se os números parecerem suspeitos.
A realidade de desempenho em modelos grandes
O Google Sheets tem limite de 10 milhões de células. A documentação menciona isso de passagem. O que ela não menciona: um único ARRAYFORMULA operando em uma coluna inteira (A:A) em uma aba com 50.000 linhas, chamado por outras 8 abas, pode elevar o tempo de recálculo a mais de 30 segundos.
A solução é delimitar o intervalo. Se os dados de transação nunca passam da linha 5.000, escreva A2:A5000, não A:A. Em modelos de apresentação para o conselho onde a aba de DRE alimenta 6 abas downstream, essa diferença separa um modelo que abre em 4 segundos de um que trava na inicialização.
Um detalhe importante sobre recálculo: o Sheets reavalia todos os resultados dependentes de ARRAYFORMULA a cada edição no intervalo de origem. Não há como torná-los estáticos sem copiar e colar valores, o que elimina a vantagem da função. Para modelos muito grandes, considere ajustar as configurações de cálculo em Arquivo > Configurações > Cálculo e mudar de "A cada mudança" para "A cada mudança e a cada minuto", reduzindo a carga em sessões de edição intensas.
O atalho que a documentação menciona (e um que ela não menciona)
Ctrl+Shift+Enter envolve a fórmula atual em ARRAYFORMULA automaticamente. Isso está na documentação.
O que não está: se você deletar as chaves { que aparecem em algumas fórmulas de array legadas importadas do Excel, o Sheets pode reavaliar de forma diferente do que você espera. A sintaxe com chaves é a notação de fórmula de array do Excel. O Google Sheets usa ARRAYFORMULA como wrapper no lugar disso. Se você importou um modelo do Excel, verifique qualquer fórmula que apareça como {=SUM(IF(...))}: ela precisa ser reescrita como =ARRAYFORMULA(SUM(IF(...))), caso contrário pode não avaliar corretamente no Sheets.
Quando ignorar ARRAYFORMULA completamente
Se você está fazendo o mesmo cálculo 3 vezes em uma coluna e o modelo não vai crescer, copiar a fórmula para baixo é mais rápido de construir e mais fácil para outro analista auditar. ARRAYFORMULA adiciona uma camada de indireção que desacelera a revisão do modelo quando outra pessoa está percorrendo a lógica.
O ponto ideal é 20 ou mais linhas, tamanho variável, ou qualquer lugar onde a mesma fórmula precise permanecer sincronizada em um conjunto de dados crescente. Para uma tabela de premissas fixas de 5 linhas, é exagero.
Perguntas frequentes sobre ARRAYFORMULA
VLOOKUP funciona dentro de ARRAYFORMULA?
Na prática, não de forma confiável. =ARRAYFORMULA(VLOOKUP(A2:A100, 'Tabelas'!$A:$B, 2, 0)) frequentemente retorna apenas o primeiro resultado do intervalo ou gera erro #VALUE!. A substituição recomendada é INDEX/MATCH dentro do ARRAYFORMULA: =ARRAYFORMULA(IFERROR(INDEX('Tabelas'!$B:$B, MATCH(A2:A100, 'Tabelas'!$A:$A, 0)), 0)). Essa combinação processa cada linha do intervalo de forma independente e retorna o array completo de resultados sem ambiguidade.
Qual é a diferença entre ARRAYFORMULA e simplesmente copiar uma fórmula para baixo?
Funcionalmente, o resultado pode ser idêntico em um modelo estático. A diferença está na manutenção: uma fórmula em ARRAYFORMULA vive em uma única célula. Se a lógica mudar, você edita em um lugar. Com a fórmula copiada por 200 linhas, uma edição descuidada pode alterar só parte das linhas e criar inconsistência silenciosa no modelo. Para conjuntos de dados que crescem (novos SKUs, novos meses, novas contas contábeis), ARRAYFORMULA garante que todas as linhas novas são processadas automaticamente sem ação manual adicional.
Por que meu ARRAYFORMULA está preenchendo milhares de linhas em branco?
Porque o intervalo de origem inclui linhas vazias e a fórmula não tem proteção para elas. Adicione IF(célula_âncora = "", "", sua_fórmula) como camada externa. Por exemplo: =ARRAYFORMULA(IF(A2:A="", "", A2:A * B2:B)). O IF interrompe a expansão onde os dados terminam e evita que o Sheets calcule resultados para 50.000 linhas potencialmente vazias, o que trava o recálculo do modelo inteiro.
O ModelMonkey consegue escanear um modelo de múltiplas abas e identificar onde ARRAYFORMULA consolidaria fórmulas copiadas espalhadas, incluindo casos em que a mesma lógica aparece em 40 linhas mas referencia uma única aba de lookup. É o tipo de limpeza que leva uma hora manualmente e alguns segundos com uma IA que lê a estrutura das suas fórmulas. Escolha um plano do ModelMonkey, compatível com Google Sheets e Excel.