=TAKE(
FILTER('DRE'!C5:O250,'DRE'!B5:B250="Cenário Base"),
12,
13
)
A fórmula retorna as primeiras 12 linhas correspondentes e 13 colunas da aba de DRE. É o equivalente mais próximo do ARRAY_CONSTRAIN do Google Sheets, embora a sintaxe e alguns casos específicos sejam diferentes.
Em julho de 2026, a Microsoft documenta o TAKE para Microsoft 365, Excel para a Web, Excel para Mac e Excel 2024. Planilhas que precisam funcionar no Excel 2021 ou em instalações desktop mais antigas ainda exigem uma alternativa com INDEX.
Qual é o equivalente ao ARRAY_CONSTRAIN no Excel?
No Google Sheets, a sintaxe é:
=ARRAY_CONSTRAIN(intervalo_origem,número_de_linhas,número_de_colunas)
No Excel, o padrão direto é:
=TAKE(intervalo_origem,número_de_linhas,número_de_colunas)
Por exemplo, o DCF usado em uma apresentação para investidores pode conter 60 períodos projetados em 15 cenários, enquanto o resumo executivo precisa apenas dos primeiros 20 trimestres e das 6 primeiras colunas de resultados:
=TAKE('Saída DCF'!B6:P65,20,6)
TAKE é melhor do que envolver o resultado em IF, preencher células indesejadas com valores vazios ou apontar um gráfico para um intervalo grande demais. A função limita a própria matriz expandida. Assim, as fórmulas dependentes recebem um resultado de 20 linhas por 6 colunas, em vez de um intervalo maior preenchido com strings vazias.
A Microsoft define TAKE como uma função que retorna um número específico de linhas ou colunas contíguas do início ou do fim de uma matriz em sua documentação da função TAKE.
Comparação das opções para limitar arrays no Excel
| Método | Versões do Excel | Tamanho dinâmico | Seleciona a partir do fim? | Melhor uso em finanças |
|---|---|---|---|---|
TAKE | Microsoft 365, Excel 2024 | Sim | Sim | Recortes para apresentações e análises de cenários |
DROP com TAKE | Microsoft 365, Excel 2024 | Sim | Sim | Janelas móveis de forecast |
INDEX com SEQUENCE | Microsoft 365, Excel 2021 | Sim | Com ajustes | Modelos compartilhados entre versões |
INDEX como fim do intervalo | Versões desktop anteriores | Limitado | Não | Blocos fixos de relatórios |
| Referências de Tabelas do Excel | Excel 2007 em diante | Sim | Não | Dados recorrentes de transações e SKUs |
| Intervalo fixo manual | Todas as versões | Não | Não | Templates estáveis com dimensões controladas |
TAKE é a melhor opção quando a compatibilidade não representa um problema. INDEX continua sendo a escolha mais segura quando equipes de tesouraria, bancos, investidores ou empresas do grupo podem abrir o arquivo em versões desktop mais antigas.
Intervalos manuais são aceitáveis quando a estrutura do relatório é realmente fixa. O risco aparece quando "fixo" significa que alguém pode inserir discretamente dois meses antes da reunião trimestral com investidores.
Como limitar arrays do Excel por linhas e colunas
O segundo argumento de TAKE controla as linhas. O terceiro argumento, que é opcional, controla as colunas.
=TAKE('Análise de Retorno'!B8:Q67,12,8)
Essa fórmula retorna 12 linhas e 8 colunas a partir do canto superior esquerdo.
Argumentos negativos fazem a contagem a partir da parte inferior ou da direita:
=TAKE('Fluxo de Caixa'!B6:M65,-12,-4)
O resultado contém as últimas 12 linhas e as últimas 4 colunas. Esse padrão é útil para uma visão móvel de liquidez quando a projeção de caixa recebe um novo período a cada mês.
As dimensões permanecem explícitas. Se uma análise de retorno contém 15 cenários em 60 períodos, TAKE(...,12,8) sempre expande para 96 células. Isso torna o resultado mais fácil de auditar do que uma sequência de testes como IF(COLUMN()<=8,...) copiados pela aba da apresentação.
Existe uma armadilha: 0 não significa que você deseja retornar zero linhas. Segundo a documentação da Microsoft, o Excel apresenta o erro #CALC! para representar uma matriz vazia. Se a quantidade de linhas vier de uma premissa que pode ser zero, defina um valor mínimo:
=TAKE('Modelo Operacional'!B7:P66,MAX(1,Premissas!$B$12),8)
Como limitar um array filtrado no Excel
TAKE se torna ainda mais útil quando aparece por fora de FILTER, SORT ou UNIQUE. A função interna constrói o conjunto de resultados, enquanto TAKE limita o conteúdo enviado para a aba de relatório.
Imagine que uma análise de margem de contribuição com 186 SKUs alimenta a apresentação trimestral para investidores. A gestão quer visualizar os 10 SKUs com menor margem, não a tabela operacional inteira:
=TAKE(
SORTBY(
FILTER(
'Rentabilidade por SKU'!A6:H191,
'Rentabilidade por SKU'!H6:H191<Premissas!$B$18
),
FILTER(
'Rentabilidade por SKU'!H6:H191,
'Rentabilidade por SKU'!H6:H191<Premissas!$B$18
),
1
),
10,
8
)
Se Premissas!$B$18 contém um limite de margem de contribuição de 38,5%, a fórmula filtra os SKUs abaixo desse percentual, ordena do pior para o melhor e retorna no máximo 10 linhas em 8 colunas.
A ordem das funções importa. Aplicar TAKE antes de SORTBY selecionaria as primeiras 10 linhas da origem e classificaria apenas esses registros. Isso responde a outra pergunta, mas o erro pode passar pela revisão porque o resultado continua visualmente organizado.
O mesmo padrão funciona para filtros de data entre abas:
=TAKE(
FILTER(
'DRE'!B:C,
('DRE'!B:B>=Premissas!$B$3)*
('DRE'!B:B<=Premissas!$B$4)
),
12,
2
)
Quando você precisa de uma agregação, e não de um array retornado, mantenha a fórmula convencional entre abas:
=SUMIFS('DRE'!C:C,'DRE'!B:B,">="&Premissas!$B$3)
Limitar os dados exibidos não altera a lógica da agregação. A restrição controla a apresentação e as dependências da matriz expandida, não a população completa da base.
Como limitar arrays no Excel sem TAKE
Para uma alternativa compatível com matrizes dinâmicas, combine INDEX e SEQUENCE:
=INDEX(
'Saída DCF'!B6:P65,
SEQUENCE(MIN(20,ROWS('Saída DCF'!B6:P65))),
SEQUENCE(,MIN(6,COLUMNS('Saída DCF'!B6:P65)))
)
Os dois testes com MIN impedem que as dimensões solicitadas ultrapassem o tamanho da origem. Isso é importante quando uma análise de sensibilidade contém apenas 4 cenários preenchidos, em vez dos 6 esperados.
Para o comportamento de matriz das versões anteriores, use INDEX para definir o canto inferior direito do intervalo:
='Saída DCF'!B6:INDEX('Saída DCF'!B6:P65,20,6)
A fórmula cria uma referência de B6 até a célula localizada na linha 20 e coluna 6 do intervalo de origem. É uma solução compacta e funciona bem dentro de funções que aceitam referências:
=SUM('Saída DCF'!B6:INDEX('Saída DCF'!B6:P65,20,6))
Esse recurso não se comporta exatamente como uma matriz dinâmica moderna em todos os contextos. Teste a planilha nas versões do Excel usadas pelos destinatários, não apenas na versão instalada no computador de quem criou o modelo.
Quando combinar DROP e TAKE
TAKE seleciona uma extremidade do array. DROP remove uma extremidade. Juntas, as funções criam uma janela localizada no meio da matriz.
Um forecast de cinco anos pode conter 12 meses históricos seguidos por 60 meses projetados. Para retornar o segundo ano da projeção, remova as primeiras 24 colunas e selecione as 12 seguintes:
=TAKE(DROP('Modelo Mensal'!C10:BZ45,,24),,12)
A documentação da função DROP confirma que valores negativos excluem linhas ou colunas a partir do fim de uma matriz. Isso torna DROP útil para remover colunas de valor terminal antes de limitar uma análise de DCF.
Uma apresentação trimestral pode usar o mesmo padrão para isolar oito trimestres de um modelo mensal:
=TAKE(
DROP('Resumo Trimestral'!B5:AZ30,,Premissas!$B$20),
26,
8
)
Nesse caso, Premissas!$B$20 controla a coluna inicial. O resultado permanece com 26 linhas e 8 trimestres enquanto a janela do relatório avança.
Por que limitar arrays em modelos financeiros
As planilhas do Excel suportam 1.048.576 linhas e 16.384 colunas, segundo as especificações e limites do Excel. Isso não significa que você deva processar colunas inteiras com matrizes dinâmicas em todas as abas.
Uma fórmula aplicada a uma coluna inteira pode analisar mais de 1 milhão de células quando a base real contém apenas 4.800 transações, como registros de vendas, pedidos ou NF-e. Repita isso em 20 cenários e a planilha estará consumindo recursos apenas porque o autor não definiu um intervalo adequado.
Limitar arrays também reduz colisões de expansão. A orientação da Microsoft sobre matrizes dinâmicas explica que intervalos de expansão bloqueados retornam #SPILL!. É mais fácil reservar espaço em um dashboard para uma saída fixa de 12 linhas do que para um filtro sem limite, cuja altura pode saltar de 9 para 43 linhas após uma atualização.
O benefício menos óbvio está na governança do modelo. Se um resumo de valuation foi projetado para mostrar oito empresas comparáveis e uma mediana de 14,2x EBITDA, limitar a exibição a oito linhas exige uma regra explícita de classificação. Uma lista sem limite permite que o conteúdo do quadro mude silenciosamente, mesmo que a automação continue parecendo confiável.
Quando não limitar um array no Excel
Não use TAKE para esconder uma lógica de origem incompleta. Se uma análise de runway exclui novas contratações porque o intervalo termina seis linhas antes do necessário, limitar a saída formatada apenas oculta o problema.
Também não limite uma tabela de auditoria quando a integridade da população é o objetivo. Saldos de dívida, eliminações intercompany e verificações das três demonstrações financeiras precisam considerar todo o conjunto controlado. Um resultado visualmente mais limpo não compensa um balanço que deixou de reconhecer R$ 4,2 milhões em passivos de arrendamento.
Tenha cuidado com análises top 10. TAKE(FILTER(...),10) retorna os primeiros 10 registros qualificados na ordem da base. Se a decisão depende das maiores exposições, das menores margens ou dos vencimentos mais próximos, classifique os dados explicitamente antes de selecionar as primeiras 10 linhas.
Para conhecer padrões relacionados de expansão no Google Sheets, consulte a referência de ARRAYFORMULA para modelos financeiros. O princípio vale para as duas plataformas: controle deliberadamente o formato do cálculo, mesmo quando as funções são diferentes.
Perguntas frequentes sobre array constrain no Excel
O Excel tem a função ARRAY_CONSTRAIN?
Não. ARRAY_CONSTRAIN é uma função do Google Sheets. No Microsoft 365 e no Excel 2024, o equivalente mais direto é TAKE, que limita uma matriz pelo número de linhas e colunas especificado.
Qual fórmula substitui ARRAY_CONSTRAIN no Excel?
Use =TAKE(array,linhas,colunas) nas versões atuais do Excel. Por exemplo, =TAKE(B2:H100,10,4) retorna as primeiras 10 linhas e 4 colunas do intervalo.
Como limitar um array no Excel 2021?
No Excel 2021, você pode combinar INDEX e SEQUENCE para gerar um recorte dinâmico. Se o arquivo também precisar funcionar em versões sem matrizes dinâmicas, use INDEX como o fim de uma referência, como em =B2:INDEX(B2:H100,10,4).
Como retornar as últimas linhas de um array?
Use um número negativo no argumento de linhas de TAKE. A fórmula =TAKE(B2:H100,-12) retorna as últimas 12 linhas do intervalo, mantendo todas as colunas.
TAKE evita o erro #SPILL!?
TAKE pode reduzir a área necessária para a expansão, mas não elimina todas as causas de #SPILL!. O erro ainda ocorrerá se houver células preenchidas, células mescladas ou outros obstáculos dentro da área de saída.
Devo usar TAKE antes ou depois de FILTER e SORTBY?
Na maioria dos relatórios, use TAKE por fora de FILTER e SORTBY. Assim, o Excel primeiro filtra e classifica toda a população relevante e somente depois limita o resultado às linhas que devem aparecer.
Resumo: como limitar arrays corretamente no Excel
Use TAKE quando a planilha for executada no Microsoft 365 ou Excel 2024. Combine a função com DROP para criar janelas móveis e posicione-a por fora de FILTER ou SORTBY quando o resultado final classificado precisar de um limite de linhas ou colunas.
Use INDEX quando a compatibilidade com Excel 2021 ou versões desktop anteriores for importante. Independentemente do método, limite o cálculo por uma razão clara de negócio: 12 meses, 8 trimestres, 10 SKUs ou 6 cenários. "Fiz caber na planilha" não é uma política de modelagem.
Escolha um plano do ModelMonkey - ele funciona no Google Sheets e no Excel.