Notifications
Clear all

Combos Dependentes com Range Dinâmico

9 Posts
1 Usuários
0 Reactions
3,015 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá a todos do Fórum Planilhando.

Estou com uma dificuldade em encontrar uma solução para aplicar Combos Dependentes.
Utilizei a Fórmula INDIRETO com um Range Estático e Pré-Definido. Funcionou!
Por exemplo:
Na Plan2 (denominada "Listas") criei 3 listas com os ranges denominados e fixos.
A 1ª Lista (Coluna A) é a Categoria, contendo Frutas (A2) e Legumes (A3).
A 2ª Lista (Coluna B) é a de Frutas, contendo uma lista de Frutas.
A 3ª Lista (Coluna C) é a de Legumes, contendo uma lista de Legumes.
Na Plan1, na Validação de Dados - Lista, na célula que irá receber o Combo "mandante" (A2) eu referênciei o Named Range "Categoria". E a célula que irá receber o Combo Dependente utilizei a fórmula INDIRETO referenciando a célula ($A2).

Assim, ao selecionar no combo "mandante" a categoria "Frutas", o combo dependente apresentaria apenas as opções da Lista de Frutas.
Se escolhesse a categoria "Legumes", só apresentaria a Lista de Legumes.

Ok Funcionou.

Mas ao tentar fazer a dependência dos Combos utilizando Ranges Dinâmicos, o INDIRETO não funcionou.
Suponho que utilizando a fórmula CORRESP funcionaria, mas não sei como aplicar.

A diferença pra 1ª solução, é que os Named Ranges de Frutas e Legumes fossem dinâmicos, mas mantivessem a dependência dos combos na Plan1.
Utilizei as fórmulas:
=DESLOC(Listas!$A$2;0;0;CONT.VALORES(Listas!$A:$A)-1;1) - Para definir o Range Dinâmico para Categoria.
=DESLOC(Listas!$B$2;0;0;CONT.VALORES(Listas!$B:$B)-1;1) - Para definir o Range Dinâmico para Frutas.
=DESLOC(Listas!$C$2;0;0;CONT.VALORES(Listas!$C:$C)-1;1) - Para definir o Range Dinâmico para Legumes.

A dúvida é, Como fazer a dependência dos Combos na Validação de Dados da Plan1, utilizando esses Ranges Dinâmicos, mantendo a lógica da 1ª solução?

Desculpa ter ficado extenso minha dúvida, mas tentei explicar o mais claro possível.
Anexei a planilha também.

Desde já,
muito obrigado.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 12:07 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Massaherow

Veja se este exemplo que eu fiz para um outro fórum resolve a tua dúvida:

Dê retorno.

Um abraço.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 12:15 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Patropi!!

Show de Bola!
Dei uma olhada na sua planilha e parabéns, está tudo muito bem explicado!
É...sabia que tinha que utilizar a função CORRESP, só não sabia como. Agora faz sentido a deslocação por Colunas à Direita utilizando a função CORRESP dentro do DESLOC.

Único problema que o Excel alegou foi que, como estou utilizando a Plan2 como um Banco de Dados e Listas, ao colocar a Validação de Dados na célula que receberia o Combo Dependente, mostrou a mensagem de erro: "Você não pode usar referências a outras pastas de trabalho ou planilhas para critério de Validação de Dados".

No caso, não sei se estou certo, para todas as referências a outras planilhas eu tenho que criar um Nome?

Por exemplo:
Na Validação de Dados da Plan1, na célula que recebe o combo dependente, a fórmula
=DESLOC(Range!$A$2;0;CORRESP($A2;Range!$B$1:$C$1;0);CONT.VALORES(Range!$B:$B)-1;1) está referenciando a planilha "Range" que contém as listas.
Então, eu teria que criar 3 nomes para todas as referências a planilha "Range" ??

Muito obrigado.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 12:56 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Acho que está faltando um COUNT Dinâmico no critério "Altura" da Função DESLOC

=DESLOC(referência ;lin; coluna ; Altura ; Larg)
=DESLOC(Range!$A$2;0;CORRESP($A6;Range!$B$1:$C$1;0);CONT.VALORES(Range!$B:$B)-1;1)

Neste critério altura, precisa obter a quantidade de itens dinâmicamente conforme a lista.

Por exemplo:
Se na lista 1 eu tiver 10 itens, e na lista 2 eu tiver 4 itens.
Conforme a fórmula, ao selecionar a Lista 2, o combo dependente irá mostrar 6 'opções' vazias e não o número exato de itens correspondentes.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 1:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Acho que está faltando um COUNT Dinâmico no critério "Altura" da Função DESLOC

=DESLOC(referência ;lin; coluna ; Altura ; Larg)
=DESLOC(Range!$A$2;0;CORRESP($A6;Range!$B$1:$C$1;0);CONT.VALORES(Range!$B:$B)-1;1)

Neste critério altura, precisa obter a quantidade de itens dinâmicamente conforme a lista.

Por exemplo:
Se na lista 1 eu tiver 10 itens, e na lista 2 eu tiver 4 itens.
Conforme a fórmula, ao selecionar a Lista 2, o combo dependente irá mostrar 6 'opções' vazias e não o número exato de itens correspondentes.

Do contrário também ocorre, se na lista 1 eu tiver 4 itens e na lista 2 eu tiver 10 itens. Conforme a Fórmula, ao selecionar a Lista 2 no combo "mandante", o combo dependente irá mostrar apenas 4 itens, truncando 6 opções.

Qual fórmula eu posso utilizar para não acontecer isso? Já que a referência da fórmula CONT.VALORES está fixa em uma coluna e não dinâmica.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 1:44 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Veja se por ser assim...

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 1:57 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Muito bom Leonardojones!!
É Exatamente isso mesmo que eu estava precisando!!

Você poderia me explicar as fórmulas que você utilizou, queria entender para aprender.

Esse você nomeou como RD
=INDIRETO("Ranges!"&ENDEREÇO(1;CORRESP(Problema!$A2;Ranges!$A$1:$Z$1;0))&":"&ENDEREÇO(1000;CORRESP(Problema!$A2;Ranges!$A$1:$Z$1;0)))

Esse você nomeou como rd2, que foi o utilizado na Validação de Dados.
=DESLOC(INDIRETO("Ranges!"&ENDEREÇO(2;CORRESP(Problema!$A2;Ranges!$A$1:$Z$1;0)));0;0;CONT.VALORES(RD)-1;1)

Muito Obrigado!
E nossa, foi muito rápido a resposta! Parabéns!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 2:05 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

A 1ª fórmula vai ser para mostrar em qual coluna será o Range...
Ex: B2:B1000 / C2:C1000 / etc

E a 2ª fórmula vai fazer um Range Dinâmico na coluna que foi mostrada na fórmula anterior!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 2:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ok Leonardojones!

Muito obrigado pela explicação!

Vou tentar desmembrar as fórmulas para entender o passo a passo.

Valew!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2011 2:20 pm