A função EMPILHARV (VSTACK em inglês) junta duas ou mais tabelas ou intervalos, um embaixo do outro, numa única matriz: a fórmula =EMPILHARV(matriz1;matriz2;…) empilha os dados na vertical automaticamente, sem precisar copiar e colar linha por linha.
Você provavelmente já teve que juntar dados de várias abas ou tabelas parecidas — vendas de janeiro, fevereiro e março, cada mês numa aba separada — numa única lista, para poder somar, filtrar ou montar uma tabela dinâmica com tudo junto. O jeito manual é copiar cada bloco de dados e colar embaixo do anterior, célula por célula.
O problema desse método manual é que ele não se atualiza sozinho: se um valor mudar na tabela original, ou se uma linha nova for adicionada em fevereiro, a lista unificada não reflete isso — é preciso copiar e colar tudo de novo. Em planilhas que recebem dados novos com frequência, isso vira um retrabalho constante e uma fonte comum de erro, porque é fácil esquecer de atualizar a cópia depois de mudar o original.
Neste artigo iremos mostrar como a função EMPILHARV junta várias tabelas verticalmente com uma única fórmula que se atualiza sozinha, o que acontece quando as tabelas têm números diferentes de colunas, e como combinar essa função com SEERRO para deixar o resultado limpo.
O que a função EMPILHARV faz
EMPILHARV é uma função de matriz dinâmica do Excel 365: ela recebe dois ou mais intervalos (que podem ter tamanhos diferentes de linhas) e devolve uma única matriz nova, com todos os dados empilhados na vertical, um bloco embaixo do outro, na ordem em que você listou os argumentos. Diferente de copiar e colar, o resultado da EMPILHARV é uma fórmula viva: se qualquer célula de origem mudar, a matriz combinada se atualiza sozinha, sem nenhuma ação manual.
Por ser uma matriz dinâmica, você digita a fórmula em uma única célula e o Excel “derrama” (spill) o resultado automaticamente pelas células vizinhas, ocupando quantas linhas e colunas forem necessárias. Não é preciso selecionar a área de destino nem confirmar com Ctrl+Shift+Enter — basta digitar a fórmula numa célula vazia e pressionar Enter.
Sintaxe da função EMPILHARV
A sintaxe é:
=EMPILHARV(matriz1;[matriz2];[matriz3];…)
Onde matriz1 é obrigatório e representa o primeiro intervalo ou tabela a empilhar, e matriz2, matriz3 e assim por diante são opcionais — você pode empilhar quantas matrizes quiser, na ordem em que forem listadas. Cada argumento pode ser uma referência de intervalo (como A2:C10), uma tabela nomeada, uma constante de matriz digitada entre chaves, ou até o resultado de outra fórmula. Em inglês, essa função se chama VSTACK (de “vertical stack”).
Exemplo prático completo
Imagine duas tabelinhas de vendas, uma para janeiro e outra para fevereiro, cada uma com as colunas Produto, Quantidade e Valor. A tabela de janeiro ocupa A2:C3 (sem contar o cabeçalho) e a de fevereiro ocupa E2:G3. Para juntar as duas numa lista só, a partir da célula I2, a fórmula é:
=EMPILHARV(A2:C3;E2:G3)
| Fórmula em I2 | Coluna I (Produto) | Coluna J (Quantidade) | Coluna K (Valor) |
|---|---|---|---|
| =EMPILHARV(A2:C3;E2:G3) | Caneta Azul | 120 | 240 |
| (derramado) | Caderno Capa Dura | 45 | 675 |
| (derramado) | Caneta Azul | 98 | 196 |
| (derramado) | Caderno Capa Dura | 60 | 900 |
Repare que o resultado sai automaticamente nas quatro linhas (duas de janeiro seguidas de duas de fevereiro), sem que você precise arrastar nada — é a matriz dinâmica se derramando pelas células abaixo e à direita de I2. Se uma nova venda for lançada na tabela de fevereiro, essa linha aparece automaticamente na lista combinada, sem precisar tocar na fórmula.
Quando as tabelas têm colunas diferentes
Nem sempre as tabelas que você quer empilhar têm exatamente o mesmo número de colunas. Se uma das matrizes tiver menos colunas do que a mais larga entre todas, o EMPILHARV completa as colunas que faltam com o erro #N/D nas linhas daquela matriz — ele não inventa um valor, só sinaliza que a informação não existe ali. Por exemplo, se a tabela de fevereiro não tivesse a coluna Valor (só Produto e Quantidade, em E2:F3), a fórmula =EMPILHARV(A2:C3;E2:F3) traria as linhas de fevereiro com #N/D na terceira coluna.
Para evitar que esses erros apareçam visualmente na planilha, envolva a fórmula numa SEERRO (o equivalente em português do IFERROR), substituindo o erro por um valor mais limpo, como uma célula vazia ou um traço:
=SEERRO(EMPILHARV(A2:C3;E2:F3);””)
Assim, em vez de #N/D, as células sem informação aparecem em branco, sem quebrar a leitura da tabela combinada.
Empilhando cabeçalhos junto com os dados
Um detalhe importante: se você incluir a linha de cabeçalho de mais de uma tabela dentro do EMPILHARV, o cabeçalho vai aparecer repetido no meio dos dados, porque a função só empilha o que você indicou, sem nenhuma inteligência para reconhecer “isso é um título”. Por isso, o mais comum é incluir o cabeçalho de apenas uma das matrizes — geralmente a primeira — e empilhar só os dados (sem cabeçalho) das demais, exatamente como no exemplo acima, em que E2:G3 começa depois do cabeçalho da segunda tabela.
EMPILHARV em vez de copiar, colar ou Poder Consultar
Para juntar tabelas pontualmente, uma vez só, copiar e colar continua sendo o caminho mais rápido. Mas quando os dados de origem mudam com frequência — uma aba nova por mês, uma tabela que cresce toda semana — a EMPILHARV evita o retrabalho de refazer a cópia toda vez. Para volumes muito grandes de dados, vindos de várias pastas de trabalho diferentes, ferramentas como o Power Query (Obter e Transformar Dados) ainda são mais indicadas, mas para juntar algumas tabelas dentro da mesma pasta de trabalho, uma fórmula EMPILHARV resolve com bem menos configuração.
Disponibilidade
A função EMPILHARV está disponível no Excel para Microsoft 365 e no Excel 2024 (Windows e Mac), por ser uma função de matriz dinâmica relativamente recente. Ela não existe nas versões perpétuas mais antigas, como Excel 2019, 2016 ou 2013, nem no Excel 2021 fora do 365. Está disponível também no Excel Online (versão web). No Google Sheets, a função equivalente tem o mesmo nome, VSTACK, com sintaxe e comportamento praticamente idênticos.
Perguntas frequentes
O que a fórmula =EMPILHARV(matriz1;matriz2) faz no Excel?
Ela junta duas ou mais tabelas ou intervalos numa única matriz, empilhando os dados na vertical (um bloco embaixo do outro), na ordem em que as matrizes foram listadas. É uma função de matriz dinâmica, então o resultado se atualiza sozinho se os dados de origem mudarem.
O que acontece se as tabelas que eu quero empilhar tiverem números diferentes de colunas?
O EMPILHARV completa com o erro #N/D as colunas que faltam nas linhas da tabela mais estreita, porque ele não inventa valores para colunas que não existem na origem. Para evitar que esses erros apareçam, envolva a fórmula numa SEERRO, assim: =SEERRO(EMPILHARV(matriz1;matriz2);””).
Por que a fórmula EMPILHARV não aparece no meu Excel?
Porque EMPILHARV é uma função de matriz dinâmica disponível apenas no Excel para Microsoft 365 e no Excel 2024. Versões perpétuas mais antigas, como Excel 2019, 2016 ou 2013, não têm essa função — nesse caso, é preciso recorrer a Power Query ou a fórmulas de matriz mais antigas para obter um resultado parecido.
Compartilhe ou Comente
Se você curtiu esse artigo aonde mostramos como usar a função EMPILHARV para juntar várias tabelas numa lista só, empilhando os dados na vertical com uma fórmula que se atualiza sozinha, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.
Você costuma juntar dados de abas diferentes copiando e colando na mão? Já teve problema com tabelas de tamanhos diferentes na hora de juntar os dados? Conta para nós nos comentários!