Notifications
Clear all

Lista Suspensa com Função Expandir e Recolher

10 Posts
2 Usuários
0 Reactions
1,927 Visualizações
(@tls13)
Posts: 50
Trusted Member
Topic starter
 

Seria possível criar uma lista suspensa que possibilite agrupar determinados itens em grupos de forma que possa expandir ou recolher o grupo para visualizar os itens?

Explicando melhor:

Quero uma lista que tenha, por exemplo, 'GRUPOS formados por MARCAS de carros' e 'ITENS formados pelos respectivos MODELOS' em UMA ÚNICA lista suspensa.

Exemplo:

Grupo: Fiat
Modelos: Palio, Bravo, Uno

Grupo: Honda
Modelos: Fit, Civic, CIty

Isso é apenas um exemplo genérico, mas minha lista terá mais de 200 itens e isso tornaria difícil a procura pelo item. Por isso quero agrupar esses itens em grupos (funcionando como uma espécie de filtro) para que facilite a busca.

Dessa forma, eu pensei se seria possível uma lista suspensa funcionando da mesma forma que funciona o Windows Explorer, onde eu consiga expandir e recolher as pastas (que seriam meus grupos) para visualizar as subpastas (que seriam meus itens).

Sei que todos irão me dizer: "É só vc criar duas listas, sendo a 2ª condicionada a 1ª". Porém, no meu caso específico aqui, eu realmente preciso que seja APENAS UMA LISTA.

Não sei se viajei demais... Obrigado!

 
Postado : 10/03/2014 11:43 am
(@gtsalikis)
Posts: 2373
Noble Member
 

E porque tem que ser apenas uma lista? rs

Pode mandar um exemplo de como vc quer que fique no final? (depois de selecionado o modelo do carro)

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 10/03/2014 12:22 pm
(@tls13)
Posts: 50
Trusted Member
Topic starter
 

E porque tem que ser apenas uma lista? rs

Pode mandar um exemplo de como vc quer que fique no final? (depois de selecionado o modelo do carro)

Eu quero que fique em apenas uma lista porque o conteúdo deverá ficar em uma única célula. Ou seja, se eu clicar em um grupo abrirá-se os itens e então eu clico novamente para escolher o que quero.

Exemplo: Cliquei na setinha da lista e se abriu os GRUPOS (Fiat, Honda). Então clico no grupo Fiat e abre-se os itens (Palio, Bravo, Uno). Escolho um desses itens e ele será inserido na célula.

Anexo um exemplo de como ficaria a lista, mas lembro que os itens só irão aparecer depois que eu clicar em um dos grupos.

 
Postado : 10/03/2014 12:57 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

tls,

Do jeito que vc pediu, creio não ser possível.

Porém, veja o anexo: escolha primeiro a marca, depois o modelo.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 11/03/2014 6:26 am
(@tls13)
Posts: 50
Trusted Member
Topic starter
 

tls,

Do jeito que vc pediu, creio não ser possível.

Porém, veja o anexo: escolha primeiro a marca, depois o modelo.

Abs

Perfeito!

Só vi agora, o site ficou do ar do ar alguns dias.

Obrigado.

 
Postado : 18/03/2014 8:49 am
(@tls13)
Posts: 50
Trusted Member
Topic starter
 

tls,

Do jeito que vc pediu, creio não ser possível.

Porém, veja o anexo: escolha primeiro a marca, depois o modelo.

Abs

Uma dúvida sobre a fórmula abaixo:

DESLOC(Plan1!$A$1;1;CORRESP(Plan1!F12;Marca;0)-1;CONT.VALORES(INDIRETO(ENDEREÇO(2;CORRESP(Plan1!F12;Marca;0))&":"&ENDEREÇO(1000;CORRESP(Plan1!F12;Marca;0)))))

Poderia me explicar na parte CORRESP(Plan1!F12;Marca;0)-1 o porque do -1 ?

 
Postado : 02/04/2014 8:08 am
(@gtsalikis)
Posts: 2373
Noble Member
 

tls,

Isso é devido à função DESLOC(). A sintaxe dela é:

Referência,
Linhas a deslocar
Colunas a deslocar;
Altura;
Largura;

Pelo modelo que eu fiz, comecei diretamente na célula A1. Porém, quando eu coloquei a parte CORRESP(Plan1!F12;Marca;0)-1, o resultado de CORRESP() sempre vai ser, no mínimo, 1.

Assim, veja que essa parte com CORRESP() está, dentro da função DESLOC(), na parte em que ela desloca a referência "A1" para os lados.

Assim, ao localizar com CORRESP() a marca "Honda", por exemplo, o resultado será 1 (sendo que "Honda" está em "A1").

Porém, a referência em DESLOC() é "A1", então, se eu colocar o resultado de CORRESP(), ela vai para a coluna do lado, no caso, "A1" passa a ser "B1".

Então, eu preciso diminuir 1 na fórmula.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 02/04/2014 10:05 am
(@tls13)
Posts: 50
Trusted Member
Topic starter
 

tls,

Isso é devido à função DESLOC(). A sintaxe dela é:

Referência,
Linhas a deslocar
Colunas a deslocar;
Altura;
Largura;

Pelo modelo que eu fiz, comecei diretamente na célula A1. Porém, quando eu coloquei a parte CORRESP(Plan1!F12;Marca;0)-1, o resultado de CORRESP() sempre vai ser, no mínimo, 1.

Assim, veja que essa parte com CORRESP() está, dentro da função DESLOC(), na parte em que ela desloca a referência "A1" para os lados.

Assim, ao localizar com CORRESP() a marca "Honda", por exemplo, o resultado será 1 (sendo que "Honda" está em "A1").

Porém, a referência em DESLOC() é "A1", então, se eu colocar o resultado de CORRESP(), ela vai para a coluna do lado, no caso, "A1" passa a ser "B1".

Então, eu preciso diminuir 1 na fórmula.

Entendi.

Agora, na fórmula SE(ÉERROS(PROC(1;1/(Marca=Plan1!F12)));Marca;Modelo) você poderia me explicar a parte PROC(1;1/(Marca=Plan1!F12)) ?

 
Postado : 03/04/2014 1:45 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Nesse caso, é um truquezinho que eu aprendi aqui no fórum.

A sintaxe do PROC, seria: valor procurado ; matriz onde procurar

No caso, defini que o valor procurado será 1

A matriz é a lista de todas as marcas, definida no nome Marca.
Porém, ai está o "truque":
- ela pega o valor da célula atual (no caso F12), e compara com todos os valores da lista Marca -> (Marca=Plan1!F12)
- Como se trata de uma comparação booleana (verdadeiro ou falso), se encontrar o valor, vai ser verdadeiro, ou seja 1. Se não encontrar o valor, vai ser falso, ou seja 0.

Com isso, eu estou dividindo 1 por esse resultado acima, ou seja,
- se a informação em F12 for uma marca, vai ser 1/1, o que vai dar o resultado do PROC como válido;
- se a informação em F12 não for uma marca, vai ser 1/0, e vai dar erro.

Por isso eu usei a combinação: SE(ÉERROS, para, decidir qual lista pegar.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 03/04/2014 2:54 pm
(@tls13)
Posts: 50
Trusted Member
Topic starter
 

Nesse caso, é um truquezinho que eu aprendi aqui no fórum.

A sintaxe do PROC, seria: valor procurado ; matriz onde procurar

No caso, defini que o valor procurado será 1

A matriz é a lista de todas as marcas, definida no nome Marca.
Porém, ai está o "truque":
- ela pega o valor da célula atual (no caso F12), e compara com todos os valores da lista Marca -> (Marca=Plan1!F12)
- Como se trata de uma comparação booleana (verdadeiro ou falso), se encontrar o valor, vai ser verdadeiro, ou seja 1. Se não encontrar o valor, vai ser falso, ou seja 0.

Com isso, eu estou dividindo 1 por esse resultado acima, ou seja,
- se a informação em F12 for uma marca, vai ser 1/1, o que vai dar o resultado do PROC como válido;
- se a informação em F12 não for uma marca, vai ser 1/0, e vai dar erro.

Por isso eu usei a combinação: SE(ÉERROS, para, decidir qual lista pegar.

Fantástico rsrs

Obrigado!

 
Postado : 07/04/2014 8:26 am