Notifications
Clear all

[Resolvido] DESAFIO - Como substituir a função SOMARPRODUTO ou otimizá-la neste caso ?

15 Posts
4 Usuários
0 Reactions
2,531 Visualizações
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

Instruções

A cada semana os dados da tabela INPUT (Cor azul) são alterados aleatoriamente.

Neste desafio, temos uma aba para cada semana, simulando a evolução do relatório com os resultados esperados na tabela OUTPUT.

Os valores da tabela INPUT devem ser transportados para a tabela OUTPUT (Cor amarela) de acordo com os parâmetros dela (neste caso I5:JJ8).

Na tabela OUTPUT pode se observar o resultado desejado utilizando-se a função SOMARPRODUTO; no entanto há um problema grave.

Esta planilha é só uma amostra, mas a planilha onde se deseja aplicar a solução possui intervalos imensos. Com isso, devido a quantidade excessiva de células com a função SOMARPRODUTO, a planilha fica lenta e com travamentos.

Isto ocorre pelo grande volume de cálculo que o Excel deve fazer em todas as células da matriz (tabela OUTPUT).

 

Objetivo

Substituir a função SOMARPRODUTO por funções mais simples para evitar o travamento da planilha onde se aplicará esta solução.

As fórmulas na tabela OUTPUT devem ser iguais em todas as abas.

 
Postado : 12/10/2022 3:02 pm
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

Favor desconsiderar a planilha anterior. Segue planilha correta.

 
Postado : 12/10/2022 3:29 pm
deciog
(@deciog)
Posts: 0
Trusted Member
 

@asampaio

Usa a função SOMASES

Decio

Marque o tópico como Resolvido se foi solucionado seu problema.
Brasil, São Paulo - SP
Décio Gassi

 
Postado : 13/10/2022 8:06 am
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

@deciog Oi, Decio. Infelizmente não resolve.

 
Postado : 13/10/2022 12:31 pm
(@osvaldomp)
Posts: 858
Prominent Member
 
Postado por: @asampaio

Os valores da tabela INPUT devem ser transportados para a tabela OUTPUT (Cor amarela) ...

Com base nas suas planilhas, se entendi corretamente, você quer repetir alguns valores da tabela azul na tabela amarela, porém sem alterar os valores da tabela azul. É isso? Se sim, essa ação é "replicar" e não "transportar", como você descreveu aí acima.

 

Na tabela OUTPUT pode se observar o resultado desejado utilizando-se a função SOMARPRODUTO; no entanto há um problema grave.

Para replicar dados basta referenciar o endereço da célula de origem. Por exemplo, em Semana 1!K5 coloque =D5. Não faz sentido utilizar SOMARPRODUTO() para essa finalidade.

 

 

Osvaldo

 
Postado : 13/10/2022 9:44 pm
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

@osvaldomp Olá, Osvaldo. Infelizmente a solução não é esta, pois exige algo muito mais elaborado. Por favor leia o enunciado do "A cada semana os dados da tabela INPUT são alterados aleatoriamente". Por favor note o que acontece na tabela OUTPUT. Ao chegarmos na semana 3, os dados das semanas 1 (coluna K) e 2 (coluna L) na tabela OUTPUT estão zerados, enquanto que os dados das semanas 3 a 6 (colunas M a P) estão replicados conforme os parâmetros das colunas I e J. A solução adequada demanda que ao se alterar os parametros das colunas I e J, os dados das colunas K a P sejam alterados automaticamente. Espero ter me expressado melhor, apesar da planilha como exemplo.

 
Postado : 16/10/2022 10:26 am
(@osvaldomp)
Posts: 858
Prominent Member
 

@asampaio Nessa situação eu sugiro uma solução via macro, sem fórmulas nas planilhas.

Retorne se você tiver interesse e se for viável/aceitável no seu caso.

obs. eu não entendi porque na planilha Semana 3, linha 4, na tabela azul consta de 2 a 5 porém não bate com a tabela amarela em que consta de 3 a 6, diferentemente das outras duas planilhas.

Osvaldo

 
Postado : 16/10/2022 11:13 am
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

@osvaldomp Olá, Osvaldo. Eu agradeço pelo interesse em ajudar. Macro é aceitável e viavél, lembrando que os intervalos das planilhas onde pretendo aplicar a sua solução são muito extensos.
Quanto a sua dúvida, por favor primeiro peço gentilmente que você se certifique que está abrindo não a primeira planilha que postei, mas a segunda planilha. Em segundo lugar, por favor note que a medida que cada semana vai passando, a semana some da tabela azul (input). Por exemplo, na semana 2, não existe mais semana 1 na tabela azul. Na semana 2, a tabela azul passa a iniciar a partir da semana 2 (célula D4). Na semana 3, a semana 1 e 2 já não existem na tabela azul; e a tabela azul passa a se iniciar na semana 3 (célula D5). Por outro lado note o que acontece na tabela amarela (output), todas as semanas permanecem lá, mas a medida que as semanas vão passando o intervalo de semanas muda conforme o intervalo de semanas da tabela azul.

 
Postado : 17/10/2022 11:17 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

Olá, Sampaio.

Sim, estou tomando como base o segundo arquivo que você postou aí acima, na sua postagem de out 12, 2022 3:29 pm.

Ok, repassando abaixo para confirmar se entendi corretamente e também para esclarecer algumas dúvidas.

Tomando inicialmente a planilha Semana1 como referência.

No início do processo a tabela azul estará vazia e então serão inseridos/alterados manualmente dados no intervalo D5:G20 e você quer que as alterações sejam automaticamente replicadas no intervalo K5:N8, obedecendo ao Parâmetro X, ao Parâmetro Z e à numeração da linha 4. E essa mecânica seria aplicada em todas as planilhas do arquivo.
Exemplos:
1. se o valor em G9 for alterado para 222, então automaticamente N6 deverá também ser alterado para 222.
2. se for inserido o valor 555 em E17 então L8 deverá ser igual a 555.

É isso?

Dúvidas (considerei que você preencheu cada célula da tabela amarela com os resultados desejados):
1. porque você colocou o valor zero nas células K6:K8 e L5:L8 ?
2. na tabela amarela você reproduziu os 4 Parâmetros X da tabela azul (A, B, C e D), no entanto você reproduziu somente um Parâmetro Z (aa). Igual na Semana2 e Semana3. Você tem interesse somente em "aa" ?
3. você comentou "... mas a planilha onde se deseja aplicar a solução possui intervalos imensos."
O que exatamente você quer dizer com "intervalos imensos"? A tabela azul tem quantas linhas? Quantas colunas? As quantidades de linhas e colunas são fixas ou podem variar? E quanto à tabela amarela?
4. você comentou "... ao se alterar os parametros das colunas I e J, os dados das colunas K a P sejam alterados automaticamente."
Então além de alterar os valores na tabela azul (D5:G20) você vai alterar também na amarela (I5:J8) ?

________________________________________________________________________________

Tomando agora a planilha Semana3 como referência.
Dúvidas:
1. você comentou "Ao chegarmos na semana 3, os dados das semanas 1 (coluna K) e 2 (coluna L) na tabela OUTPUT estão zerados,..."
Se entendi corretamente, a cada planilha SemanaX será manualmente acrescida uma coluna à direita da tabela amarela, e as colunas utilizadas nas semanas anteriores devem ficar preenchidas (ou deverão ser preenchidas pela macro?) com valores zero, conforme o seu comentário acima.
Qual a necessidade/utilidade de manter as colunas das semanas anteriores preenchidas com zeros?

Osvaldo

 
Postado : 18/10/2022 8:14 pm
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

@osvaldomp Olá, Osvaldo

Mais uma vez eu agradeço pelo seu interesse em ajudar.
Segue abaixo meus comentários:
Quantos aos exemplos 1 e 2, o seu entendimento está correto. E ao verificar minha planilha, eu vi que cometi o erro de não colocar a fórmula SOMARPRODUTO em todas as células da tabela amarela (OUTPUT). Estou corrigindo a planilha novamente e postando ela aqui. Peço desculpas quanto a isso.

Quanto às suas perguntas, vamos lá:

1. A planilha estava errada. Corrigi a planilha e anexei.
2. Não. Eu tenho interesse em todos os parâmetros (aa, bb, cc ou dd).
3. A tabela azul tem 494 linhas e 730 colunas, sem contar com os cabeçalhos nas linhas e colunas que contém os parâmetros. A tabela amarela possui 1294 linhas e 104 colunas. As quantidades de linhas e colunas são fixas, mas é desejável que possam aumentar.
4. A tabela amarela recebe os valores da tabela azul de acordo com os parametros que podem ser alterados manualmente.

Estas as respostas, Osvaldo.

Porém estive pensando aqui e imaginei que caso você consiga uma solução para esta planilha exemplo, eu talvez não consiga aplicar na planilha alvo. Então, talvez seja melhor eu compartilhar a planilha alvo aqui e/ou talvez abrir um novo tópico sobre a mesma.

Por favor deixe-me saber seus pensamentos.

Atenciosamente,
Albert

 
Postado : 19/10/2022 11:13 pm
(@osvaldomp)
Posts: 858
Prominent Member
 
Postado por: @asampaio

... cometi o erro de não colocar a fórmula SOMARPRODUTO em todas as células da tabela amarela...

Sugestão: não utilize fórmulas, coloque manualmente em cada célula o resultado desejado

Estou corrigindo a planilha novamente e postando ela aqui.

O intervalo K6:K8 continua preenchido com zeros; eu suponho que deveria ser 40, 50 e 10 respectivamente. É isso?

2. Não. Eu tenho interesse em todos os parâmetros (aa, bb, cc ou dd).

Então seria oportuno se você montasse um modelo com todas as variações, pois nesse último arquivo continuamos somente com  "aa". Considere que você domina totalmente o conteúdo das planilhas e sabe o objetivo final, porém nós aqui do fórum sabemos nada disso.

3. A tabela azul tem 494 linhas e 730 colunas, sem contar com os cabeçalhos nas linhas e colunas que contém os parâmetros. A tabela amarela possui 1294 linhas e 104 colunas. As quantidades de linhas e colunas são fixas, mas é desejável que possam aumentar.

Ok, vou considerar como variáveis as quantidades de linhas e de colunas nas duas tabelas. Só precisamos definir se a coluna inicial da tabela azul é a coluna B, conforme está no seu modelo, e se sempre haverá uma coluna vazia entre as duas tabelas, também conforme o seu modelo.

Ainda tentando entender o seu objetivo final, pois é comum no Excel e em VBA existirem múltiplos caminhos que conduzem a um só resultado, assim, se entendermos com exatidão o seu objetivo, então poderemos juntos encontrar caminhos mais fáceis e curtos para transitar. Até este ponto e com base nas suas explicações, eu supunha que você queria replicar na tabela amarela apenas parte dos dados da tabela azul. No entanto, a sua afirmação acima de que a tabela amarela terá mais linhas do que a tabela azul já me deixou em dúvida. Ou seja, se fossem replicados todos os dados então a tabela amarela teria igual quantidade de linhas da azul, no entanto, se vai replicar apenas parte dos dados, a amarela deveria ter menos linhas do qua a azul. Você poderia explicar?

4. A tabela amarela recebe os valores da tabela azul de acordo com os parametros que podem ser alterados manualmente.

Se entendi corretamente os parâmetros que podem ser alterados são os da tabela amarela. E isso? Você pode passar alguns exemplos na própria planilha?

________________________________________________________________________________________________
A última parte da minha mensagem anterior ficou sem a sua reposta. Para facilitar vou reproduzi-la abaixo.
Tomando agora a planilha Semana3 como referência.
Dúvidas:
1. você comentou "Ao chegarmos na semana 3, os dados das semanas 1 (coluna K) e 2 (coluna L) na tabela OUTPUT estão zerados,..."
Se entendi corretamente, a cada planilha SemanaX será manualmente acrescida uma coluna à direita da tabela amarela, e as colunas utilizadas nas semanas anteriores devem ficar preenchidas (ou deverão ser preenchidas pela macro?) com valores zero, conforme o seu comentário acima.
Qual a necessidade/utilidade de manter as colunas das semanas anteriores preenchidas com zeros?
 
Complementando, na planilha Semana1 na tabela amarela há 4 colunas com dados, K:N, digamos dados úteis.
Já na Semana2 os dados úteis continuam ocupando 4 colunas, porém foram deslocados para L:O e agora existe uma coluna com dados zerados (inúteis?), que é a coluna K.
Depois, na Semana3 os dados estão em M:P e agora já aparecem duas colunas com dados zerados, isso me faz concluir que na planilha Semana40 haverá 39 colunas com dados zerados na tabela amarela.
 
Já que as planilhas são independentes, porque não manter cada uma delas com dados em K:N e sem colunas zeradas, como está na planilha Semana1?
 
Ainda, como exatamente você faz para incluir mais uma planilha? Por exemplo, como você obterá a planilha Semana4 ?
 
 
 
 

 

Osvaldo

 
Postado : 20/10/2022 8:01 pm
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

... cometi o erro de não colocar a fórmula SOMARPRODUTO em todas as células da tabela amarela...

Sugestão: não utilize fórmulas, coloque manualmente em cada célula o resultado desejado

 

Resposta: OK. Estou anexando a planilha sem fórmulas e somente com os resultados esperados.

 

Estou corrigindo a planilha novamente e postando ela aqui. 

O intervalo K6:K8 continua preenchido com zeros; eu suponho que deveria ser 40, 50 e 10 respectivamente. É isso?

 

Resposta: Isso mesmo. A planilha sem fórmulas que estou anexando agora está corrigida.

 

  1. Não. Eu tenho interesse em todos os parâmetros (aa, bb, cc ou dd).

Então seria oportuno se você montasse um modelo com todas as variações, pois nesse último arquivo continuamos somente com  "aa". Considere que você domina totalmente o conteúdo das planilhas e sabe o objetivo final, porém nós aqui do fórum sabemos nada disso.

 

Resposta: OK. Na planilha sem fórmulas que estou anexando agora, eu considerei algumas variações.

 

  1. A tabela azul tem 494 linhas e 730 colunas, sem contar com os cabeçalhos nas linhas e colunas que contém os parâmetros. A tabela amarela possui 1294 linhas e 104 colunas. As quantidades de linhas e colunas são fixas, mas é desejável que possam aumentar.

Ok, vou considerar como variáveis as quantidades de linhas e de colunas nas duas tabelas. Só precisamos definir se a coluna inicial da tabela azul é a coluna B, conforme está no seu modelo, e se sempre haverá uma coluna vazia entre as duas tabelas, também conforme o seu modelo.

Ainda tentando entender o seu objetivo final, pois é comum no Excel e em VBA existirem múltiplos caminhos que conduzem a um só resultado, assim, se entendermos com exatidão o seu objetivo, então poderemos juntos encontrar caminhos mais fáceis e curtos para transitar. Até este ponto e com base nas suas explicações, eu supunha que você queria replicar na tabela amarela apenas parte dos dados da tabela azul. No entanto, a sua afirmação acima de que a tabela amarela terá mais linhas do que a tabela azul já me deixou em dúvida. Ou seja, se fossem replicados todos os dados então a tabela amarela teria igual quantidade de linhas da azul, no entanto, se vai replicar apenas parte dos dados, a amarela deveria ter menos linhas do qua a azul. Você poderia explicar?

 

Resposta: Eu acredito que seja mais produtivo postar aqui a planilha alvo (que é a planilha final onde será aplicada a solução), porém eu precisaria trocar somente os dados delas por questões de confidencialidade. A planilha alvo tem uma organização entre abas diferentes da planilha exemplo. Por exemplo, a planilha azul está em uma aba enquanto a planilha amarela está em outra aba. Dada a complexidade do problema, estou chegando a conclusão que é de fato melhor compartilhar a planilha alvo aqui.

 

  1. A tabela amarela recebe os valores da tabela azul de acordo com os parametros que podem ser alterados manualmente.

Se entendi corretamente os parâmetros que podem ser alterados são os da tabela amarela. E isso? Você pode passar alguns exemplos na própria planilha?

 

Resposta: Correto. Sim, estou fazendo alguns exemplos na planilha em anexo sem formulas.

________________________________________________________________________________________________

A última parte da minha mensagem anterior ficou sem a sua reposta. Para facilitar vou reproduzi-la abaixo.

Tomando agora a planilha Semana3 como referência.
Dúvidas:
1. você comentou "Ao chegarmos na semana 3, os dados das semanas 1 (coluna K) e 2 (coluna L) na tabela OUTPUT estão zerados,..."
Se entendi corretamente, a cada planilha SemanaX será manualmente acrescida uma coluna à direita da tabela amarela, e as colunas utilizadas nas semanas anteriores devem ficar preenchidas (ou deverão ser preenchidas pela macro?) com valores zero, conforme o seu comentário acima.
Qual a necessidade/utilidade de manter as colunas das semanas anteriores preenchidas com zeros?

 

Complementando, na planilha Semana1 na tabela amarela há 4 colunas com dados, K:N, digamos dados úteis.

Já na Semana2 os dados úteis continuam ocupando 4 colunas, porém foram deslocados para L:O e agora existe uma coluna com dados zerados (inúteis?), que é a coluna K.

Depois, na Semana3 os dados estão em M:P e agora já aparecem duas colunas com dados zerados, isso me faz concluir que na planilha Semana40 haverá 39 colunas com dados zerados na tabela amarela.

 

Já que as planilhas são independentes, porque não manter cada uma delas com dados em K:N e sem colunas zeradas, como está na planilha Semana1?

 

Ainda, como exatamente você faz para incluir mais uma planilha? Por exemplo, como você obterá a planilha Semana4 ?

 

Resposta: Vou trabalhar numa versão da planilha alvo para que eu possa compartilhá-la aqui. Vai ser melhor e evitará que você tenha todo um trabalho que eu não conseguiria aplicar na planilha alvo.

 
Postado : 23/10/2022 1:49 pm
(@osvaldomp)
Posts: 858
Prominent Member
 
Postado por: @asampaio

"Vou trabalhar numa versão da planilha alvo para que eu possa compartilhá-la aqui. "

Ok, vamos aguardar.

 

Osvaldo

 
Postado : 24/10/2022 11:01 am
(@asampaio)
Posts: 24
Eminent Member
Topic starter
 

@osvaldomp Depois de pesquisar bastante, consegui resolver, graças a Deus. Solução anexada.

Primeiro eu criei as fórmulas de concatenação na coluna A. Depois eu, desenvolvi a formula abaixo para o campo amarelo:

=SEERRO(SOMA(($A$5:$A$20=$I5&$J5)*(DESLOC($D$5:$G$20;0;CORRESP(K$4;$D$4:$G$4;0)-1;;1)));"")

Funcionou!

Achei a solução neste site: http://www.linhadecodigo.com.br/artigo/781/excel-formulas-matriciais.aspx

Abcs a todos que de alguma forma se interessaram no assunto.

Atenciosamente,
Albert Sampaio

 
Postado : 29/10/2022 2:12 pm
(@Anônimo)
Posts: 0
 

@asampaio Fala meu amigo tudo bem? eu fiquei pensando muioto para encontrar a fórmula substituia a função SOMAR PRODUTO Para solucionar o problema eu usei a função Seerro aninhada com a função índice. ficou assim a fórmula =SEERRO(ÍNDICE($D$5:$G$20;CORRESP($I5&$J5;$B$5:$B$20&$C$5:$C$20;0);CORRESP(K$4;$D$4:$G$4;0));0). Essa mesma fórmula eu consegui aplicar nas 3 planilhas do arquivo enviado. Segue o arquivo anexo.

Este post foi modificado 2 anos atrás por Anônimo
 
Postado : 17/11/2022 8:24 pm