Aqui está uma opção que não usa Power Query ou tabelas dinâmicas:
Como você declarou nos comentários, você pode criar a tabela de resultados desejada com tudo, exceto os campos Ordered qty.
e Delivered qty.
. Isso significa que tudo o que precisamos fazer é totalizar os valores para cada planilha usando Art-no.
como o ID exclusivo.
Etapa 1: Crie uma lista com todos os nomes de planilha contidos nela. Isso pode ser feito com um pequeno VBA, pois há tantas folhas no seu arquivo.
Sub SheetNames()
Dim ws As Worksheet
Dim r As Integer
Set ws = Worksheets.Add
For r = 1 To Worksheets.Count
ws.Cells(r, 1).Value = Worksheets(r).Name
Next
End Sub
Etapa 2: Crie um intervalo nomeado que se refira à lista de nomes de planilhas. Eu transformei a lista em uma tabela e baseie o intervalo de nomes nisso, mas você não precisa.
Etapa3:CriesuatabeladeresultadosbasesemosvaloresOrderedqty.
eDeliveredqty.
preenchidos.Sevocênãotiverissodisponívelemalgumlugar,talvezsejamaisfácilusaralgocomoo Sir Adelaide postou para combinar todas as folhas, apague os campos que você não precisa, apague todo o qty. valores e remova duplicados. Você pode se perguntar por que você precisaria disso se você simplesmente seguir esse método, mas o truque na próxima etapa é muito legal para não compartilhar.
Etapa4:Escrevasuasfórmulasparatotalizarosdadosdetodasasplanilhasdeumasóvez.Primeiro,aquiestáafórmulaquevocêpodeusarparaOrderedqty.
:
=SUMPRODUCT(SUMIF(INDIRECT("'"&sheets&"'!"&"B2:B10000"),[@[Art-no.]],INDIRECT("'"&sheets&"'!"&"D2:D10000")))
É uma SUMIF
especial envolvida em SUMPRODUCT
. A chave para fazer com que o SUMIF
funcione com uma referência 3D é a função INDIRECT
e a lista de nomes de planilhas que criamos. Aqui estão as partes da fórmula:
-
INDIRECT("'"&sheets&"'!"&"B2:B10000")
É uma função INDIRECT
padrão, exceto que estamos fazendo referência ao intervalo nomeado que fizemos na Etapa 2, que aponta para uma lista de nomes de planilha. É isso que faz dela uma referência 3D. Eu escolhi B2:B10000
, mas você pode ajustar / expandir conforme necessário. É fácil tornar a referência maior do que a necessária para garantir que nada seja esquecido, desde que os intervalos nas duas funções INDIRECT
sejam do mesmo tamanho. Ele precisa apontar para a coluna com Art-no.
nas outras planilhas.
-
[@[Art-no.]]
Desde que criei minha tabela de resultados em uma tabela real no Excel, isso apenas aponta para o valor Art-no.
na linha atual com a fórmula.
-
INDIRECT("'"&sheets&"'!"&"D2:D10000")
Este é o mesmo que o outro INDIRECT
, mas aponta para a coluna Ordered qty.
.
-
SUMIF(~)
Isso agora se torna SUMIF(Art-no. from every sheet, Art-no. in this row, Ordered qty. from every sheet)
-
SUMPRODUCT(~)
O SUMIF
retornará uma matriz em vez de um único valor, portanto, usamos isso para apenas somar todos os valores nessa matriz.
A fórmula para Delivered qty.
é a mesma, exceto que você deve alterar D2:D10000
para G2:G10000
ou o que for necessário para apontar para a coluna com Delivered qty.
nas outras planilhas.
Crédito onde o crédito é devido, eu encontrei este método em CreditJet.net e pensei que era incrível.