Como substituir uma fórmula do array Excel por outra regular para evitar um longo tempo de cálculo

0

EXEMPLO

usando uma matriz de fórmulas no intervalo (E11: E16) De acordo com o exemplo acima:

Para contar clientes exclusivos no intervalo (E2: E7) que atendam apenas aos seguintes critérios:

1- Produto Adquirido 1, independentemente de terem adquirido outros produtos ou não

2- Comprou menos de 5 unidades após a soma. se houver clientes repetidos

3- Seus códigos de área correspondem ao código correspondente no intervalo (D11: D16)

Eu uso a seguinte fórmula de matriz para o E11:

=SUM(IF(FREQUENCY(IF($G$2:$G$7=D11,IF($I$2:$I$7="Product1",IF($J$2:$J$7<5,IF($E$2:$E$7<>"",MATCH($E$2:$E$7,$E$2:$E$7,0))))),ROW($E$2:$E$7)-ROW(G2)+1),1))

Esta fórmula está indo muito bem, ao mesmo tempo em que usá-la através de um banco de dados enorme contendo toneladas de linhas e colunas, o Excel leva 3 minutos para calcular apenas uma célula que é terrível continuar assim

existe alguma maneira de converter esta fórmula de matriz em uma regular ... qualquer ajuda será apreciada ao máximo ... Agradecemos antecipadamente

    
por Ibraam Samir 24.07.2016 / 08:14

1 resposta

0

Eu usaria o Power Query para isso. O Power Query é um suplemento gratuito da Microsoft para o Excel 2010 e 2013 e foi incorporado ao Excel 2016 na faixa de opções Dados, em Obter & Transforme.

Não tenho certeza da sua definição de "toneladas", mas o Power Query é dimensionado para cerca de 10 milhões de linhas de entrada com bastante conforto. Se a sua fonte de dados for realmente um banco de dados (por exemplo, SQL Server, Oracle, etc.), o Power Query mudará o máximo possível do trabalho para o banco de dados.

Para o seu desafio, eu começaria criando uma consulta usando o botão Da tabela para ler na primeira tabela e escolhendo Fechar e carregar / Fechar e carregar para e escolha Criar somente conexão . Se seus dados de origem realmente vierem de um banco de dados real ou de outro arquivo, será mais eficiente apontar o Power Query diretamente para essa fonte.

Em seguida, eu iniciaria a consulta de saída real da lista de códigos de área no intervalo D11: D16, usando o botão Da tabela .

Eu adicionaria uma etapa "Mesclar" para ingressar na primeira consulta sobre código de área e, em seguida, expandir todas as suas colunas.

Em seguida, adicionaria uma Coluna condicional chamada Produto 1 , especificando: if (coluna) Produto igual a (valor) Produto 1 então (coluna) Produto

Em seguida, adicionaria uma etapa Agrupar por , agrupando em Código de área e Cliente e agregando a soma de vendas e Máximo do produto 1 .

Em seguida, eu filtraria a coluna Produto 1 para apenas as linhas com um valor de "Produto 1" e filtraria a coluna Vendas para menos de 5.

Por fim, gostaria de outra etapa Agrupar por , agrupar em código de área e agregar a Contagem padrão.

Por padrão, o Power Query entregará isso em uma nova Tabela em uma nova pasta de trabalho - provavelmente é melhor deixá-la lá para evitar confrontos com outros objetos.

Quando os dados de origem são alterados, basta atualizar a consulta para gerar novamente a tabela de resultados.

    
por 27.07.2016 / 01:46