Notifications
Clear all

VBA lista de valores únicos e ranqueados baseado em seleção

8 Posts
2 Usuários
0 Reactions
1,632 Visualizações
(@rafa_gomes)
Posts: 12
Active Member
Topic starter
 

Olá pessoal, boa noite!

Primeiramente, me desculpem se eu estiver fazendo este pedido de alguma maneira errada. Mesmo após ler as regras do fórum eu sou muito novo e sem experiência com tecnologia e fóruns.

No trabalho me deparei com uma situação em que preciso criar uma lista de valores únicos e ranqueados baseado em um argumento de entrada e uma lista de valores de onde será criada a lista de valores únicos. Por exemplo, a entrada seria a seguinte:

Coluna A | Coluna B
TOTAL MASSAS | AGNESI
TOTAL MASSAS | SELMI
GRANO DURO | BARILLA
CASEIRO | FIT FOOD
GRANO DURO | SELMI
TOTAL MASSAS | BARILLA

Eu teria uma caixa de seleção, então digamos que eu tenha selecionado na caixa a opção "TOTAL MASSAS", assim eu preciso que o resultado seja o seguinte:

Coluna C
AGNESI
BARILLA
SELMI

Ponto importante: a caixa de seleção está em uma sheet e a lista de onde sairão os valores estão em outra. Também é necessário que o retorno seja ranqueado por ondem alfabética.

Se precisarem de mais infos sobre a planilha fiquem à vontade para me pedirem.

Muito obrigado desde já!

Forte abraço!
Rafa

 
Postado : 30/03/2018 8:42 pm
(@klarc28)
Posts: 971
Prominent Member
 

Anexo

 
Postado : 31/03/2018 4:07 am
(@rafa_gomes)
Posts: 12
Active Member
Topic starter
 

Olá Klarc28, muito obrigado pela resposta!

Eu testei o seu código e a lógica funcionou para os dados fornecidos! Porém, estes dados que forneci são apenas uma amostra com pouquíssimas linhas dos valores de entrada. Acrescentei algumas linhas novas para MARCA e FORNECEDOR e a lógica foi quebrada, o retorno na coluna FILTRO vem misturado o que parece ser um ranking do maior para o menor (alfabético), porém com alguns valores que deveriam estar em outra posição do ranking - resumindo o ranking não funcionou com a entrada de novos valores:

- Eu pedi ajuda com este código porque julguei que seria fácil depois adaptar (o que para mim não foi), eis aqui as minhas reais necessidades se puder me ajudar mais uma vez:
Preciso entender 3 Pontos:
1. Como faço para que a lógica continue funcionado para uma quantidade de linhas de entradas grande (tenho mais de 10k), isto é o ranking continue funcionando do menor para o mair (em ordem alfabética)
2. Como faço para ajustar os valores do ComboBox manualmente, ou seja, independente dos valores da coluna A. Se eu ajustar manualmente vou quebrar o seu código?
3. A minha base de entrada hoje não possui o totalizador “TOTAL MASSAS”, mas eu gostaria que se a seleção na CAIXA DE SELEÇÃO fosse essa que viessem todos os fornecedores no FILTRO ranqueados.

Adicional: desculpe-me se for pedir muito, existe alguma possibilidade de fazer com que na coluna Filtro o primeiro valor retornado seja "TODOS" caso hajam mais de duas linhas de fornecedor no FILTRO, e caso haja apenas uma linha de fornecedor como retorno apareça somente este valor único? Por exemplo, se eu selecionar CASEIRO no filtro apareceria apenas FIT FOOD, e se eu selecionar GRANO DURO apareceria na sequência TODOS, BARILLA e SELMI.

Obrigado mais uma vez!
Abs,
Rafa

 
Postado : 31/03/2018 8:57 am
(@klarc28)
Posts: 971
Prominent Member
 

Fiz uma alteração no arquivo às 15:41.
Verifique se já baixou esta versão.

 
Postado : 31/03/2018 9:30 am
(@rafa_gomes)
Posts: 12
Active Member
Topic starter
 

Olá Klarc28, obrigado pelo retorno mais uma vez!

Eu baixei a última versão que você editou e quando fiz a seleção pelo 'TOTAL MASSAS' a coluna filtro retornou duas vezes o mesmo Fornecedor, no caso a SELMI. Além disso, não consigo encontrar o input do Combo.Box (desculpe minha ignorância).

Contextualizando: a ideia original é eliminar a necessidade de uma aba que tenho que atualizar mensalmente que possui todas as possíveis combinações de seleção nos filtros. Eu teria duas alternativas para isso, pelo menos: 1. Criar uma macro para criar esta aba chamada DEFINE_3, e que representa todas as possibilidades de combinações das caixas de seleção que tenho no relatório, ou 2. Criar uma macro dentro do relatório ativada pela seleção nas caixas de seleção e que retornará a lista de valores que entrará na próxima caixa de seleção (encadeamento).

> Se possuir alguma recomendação de qual estratégia seguir, será muito bem-vindo também!

Estou subindo o arquivo original 'RELATORIO', com pequenas modificações. A ideia é que a partir da seleção feita no filtro 'Subcategoria', o filtro 'Fabricante' seja autoajustável. As entradas de Subcategoria devem vir da sheet 'DEFINE_1' (O3:O12), enquanto que o filtro 'Fabricante' exibirá com base na sheet 'BASE_RET' (range E:E) os valores condicionados a escolha do filtro 'Subcategoria'. Na sheet 'BASE_RET' (range D:D) é onde se encontra o valor de comparação com a seleção feita em 'Subcategoria'.
Por último, dada a seleção feita em ‘Fabricante’ (dados que os valores resultam da primeira seleção) a lista de marcas virá dentro da sheet ‘MARCAS’ a partir da célula ‘C21’. Ressaltando que este terceiro grupo de valores depende da segunda seleção que depende da primeira. Ou seja, não pode aparecer uma marca que não exista para uma determinada Subcategoria.

Pontos importantes:
1. o retorno não pode vir duplicado
2. deve vir sempre em ordem alfabética do menor para o maior (A para Z), se empatado deve considerar a segunda letra do valor, mas nunca remover o valor que veio por último, ou seja, valores não podem ser excluídos por causa de empate
3. o valor 'TODOS' deve ser a primeira opção quando tiver dois ou mais valores retornados em 'Fabricante' após a seleção em 'Subcategoria'. Caso tenha apenas um valor de retorno, 'TODOS' não deverá ser exibido e o primeiro valor da lista deverá ser o valor encontrado dada a condicional de 'Subcategoria'.

Muitíssimo obrigado, mais uma vez por toda a atenção e ajuda!
Abs,
Rafa

 
Postado : 01/04/2018 10:27 am
(@rafa_gomes)
Posts: 12
Active Member
Topic starter
 

ADICIONADO ANEXO

 
Postado : 01/04/2018 10:42 am
(@klarc28)
Posts: 971
Prominent Member
 

Eu baixei a última versão que você editou e quando fiz a seleção pelo 'TOTAL MASSAS' a coluna filtro retornou duas vezes o mesmo Fornecedor, no caso a SELMI. Além disso, não consigo encontrar o input do Combo.Box (desculpe minha ignorância).

Está retornando SELMI duas vezes porque foi digitado na coluna um SELMI sem espaço no final e um SELMI com espaço no final. Se não houver esse problema de digitação, não haverá duplicidade.
Na combobox não dá para inserir manualmente, pois está pegando os dados digitados na coluna. Se quiser inserir item na combobox, insira na coluna.
Daqui para a frente, vou deixar para você mesmo ir modificando o projeto ou para outra pessoa te ajudar, pois estou muito atarefado no momento e seu projeto é cheio de detalhes.

 
Postado : 01/04/2018 10:44 am
(@rafa_gomes)
Posts: 12
Active Member
Topic starter
 

Muito obrigado, Klarc28! Eu fiz novos testes com o código que me forneceu e obtive alguns resultados positivos. Acredito que eu consiga avançar um pouco mais sozinho.
Abs!

 
Postado : 01/04/2018 12:39 pm