Notifications
Clear all

Filtrando Valores em uma coluna

6 Posts
2 Usuários
0 Reactions
1,167 Visualizações
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Bom dia pessoal,

Eu gostaria de saber se existe algum código que me possibilite filtrar/tirar alguns valores da coluna "E" para chegar um outro valor da minha necessidade, ou que pelo menos chegue o mais aproximado dele.
Veja os exemplos na planilha anexo.

Obrigado!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 20/04/2017 6:09 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite Leandro,

A algum tempo vi uma tópico com uma questão que acredito que seja similar a sua, e o problema foi resolvido usando o Solver. Como não achei o tópico, montei um código (módulo1 do arquivo em anexo).

Antes de executar vá em: Ferramentas -> Referência-> ative o Solver

Qualquer dúvida é só perguntar.

att,

 
Postado : 23/04/2017 9:25 pm
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Bom dia, brunoxro!
Primeiramente quero agradecer a boa vontade, cara. Não sabia que daria tanto trabalho pra fazer esse tipo de coisa rs.

Bom, consegui abrir a planilha aqui e fiz alguns testes. Realmente a planilha retorna valores muito aproximados daquele que estou precisando. No entanto, percebi que ela não me retorna o valor exato (se existir essa possibilidade). Por exemplo:

Peguei dois números da base, 1550,67 e 905,69, coloquei a soma desses dois em "Valor Alvo" (A soma deles é 2456,36) e cliquei em Buscar. O valor encontrado pelo sistema foi 2432,07, ou seja, achou sim um valor muito aproximado do "valor alvo", mas infelizmente não acha o valor exato (se existir possibilidade), como neste exemplo.

Como não entendo muito deste Solver, queria saber se isso é normal ou tem como resolver.

Agradeço DEMAAAAAAIS a colaboração!

att.

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 24/04/2017 6:50 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Alguém consegue complementar?

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 24/04/2017 3:00 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde Leandro,

Pensado no problema, isso deve ter ocorrido porque escolhi maximizar com a restrição do Valor Encontrado <= Valor Alvo.
Quando escolhi mudar a restrição para Valor Encontrado = Valor Alvo, em alguns casos demorou muito para rodar e o valor não foi encontrado. Por isso escolhi inverter o problema e colocar uma minimização com Valor Encontrado >= Valor Alvo.

Vi que obtive alguns resultados melhores e mais rápidos, mesmo quando testei com Valor Encontrado = Valor Alvo.

Em anexo coloquei o código modificado para minimização. O que recomendo você fazer, é rodar o código com a restrição de Valor Encontrado >= Valor Alvo e depois gerar uma solução para Valor Encontrado = Valor Alvo. Isso pode ser feito tanto manualmente como por um código.

Manualmente = depois de rodar a restrição de >=, vá em Dados -> Solver -> Clique na restrição de G3>G1 -> Clique em Alterar -> Mude para '=' -> Resolver
Na célula G3 vai aparecer o resultado achado e onde estiver 1 na coluna C será a linha dos valores desejados.

Por Código é praticamente a mesma coisa que fiz, mas terá que mudar o Relation na linha 53 para 2 (que significa colocar '=')

Teste e dê retorno.

att,

 
Postado : 25/04/2017 1:03 pm
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
Topic starter
 

Entendi perfeitamente,
fiz os testes aqui e foram bem favoráveis. Penso que este tipo de ferramente é muito eficaz quando não é uma planilha muito extensa, pois realmente demora bastante, dependendo do valor alvo.
Outra coisa é que o Solver Free é limitado a 200 linhas, e isso me complica bastante, uma vez que trabalho com umas 20 mil linhas, aproximadamente rs.

Pois bem, acredito que me ajudará bastante de alguma forma, pois agora tenho uma ótima diretriz para pesquisar e trabalhar possíveis melhorias. No entanto, se conseguir resolver o problema da limitação (200 linhas), fico aberto a contribuições hahah. ([email protected])
Vou começar a estudar sobre esse "Solver", achei interessante demais.

Muito obrigado pela força!

Abração!

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 26/04/2017 8:45 am