Crie uma lista suspensa dependente em uma única célula no Excel

1

Estou tentando criar uma lista suspensa dependente para uma escola secundária. O Usuário selecionará a célula A1, Clique no Corredor 3 (por exemplo), então o usuário irá clicar na célula A1 novamente e então selecionar a Sala #, 325 (por exemplo). O resultado final deve ser que a célula A1 mostre 325. Posso criar a primeira lista suspensa, mas a segunda parte é onde estou tendo um grande problema. Estou usando o Excel 2010. Qualquer ajuda seria apreciada. Obrigado

    
por Larry Anderson 02.07.2012 / 08:11

2 respostas

3

Eu duvido que seja possível fazer isso na mesma célula (A1 para o primeiro item e novamente na mesma célula para o segundo item). Eu mesmo tive um problema semelhante e isto é o que eu usei para resolvê-lo. Agora eu tenho vários menus suspensos dependentes uns dos outros, na primeira folha do Excel livro que alguns dos meus colegas estão usando para "preencher o formulário" :) Aqui também é um bom exemplo sobre como resolver este problema.

Exemplo de tabela que pode ser algo que você precisa

A           B
HALLWAY     ROOM
Hallway 3   353
Hallway 3   325
Hallway 1   157
Hallway 1   124
Hallway 2   234
Hallway 2   265

Crie duas listas suspensas.

A primeira lista suspensa contém valores distintos exclusivos da coluna A. A segunda lista suspensa contém valores distintos exclusivos da coluna B, com base no valor escolhido na primeira lista suspensa.

Crie um intervalo com nome dinâmico em Fórmulas > Gerenciador de nomes > Novo > nomeie-o como hallway > coloque =OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A$2:$A$1000)) no campo "Refere-se a:" > Fechar

Crie uma lista única exclusiva da coluna A. Selecione Planilha2 > selecione A2 > escreva "=INDEX(hallway,MATCH(0,COUNTIF($A$1:A1,hallway),0))" + CTRL + SHIFT + ENTER > Copie a célula A2 e cole-a até onde for necessário.

Crie um intervalo com nome dinâmico para obter uma lista única exclusiva em Fórmulas > Gerenciador de nomes > Novo > nomeie-o como uniqhall > coloque =OFFSET(Sheet2!$A$2, 0, 0, COUNT(IF(Sheet2!$A$2:$A$1000="", "", 1)), 1) no campo "Refere-se a:" > Fechar

Criar lista suspensa > Selecione Folha1 > Selecione a célula D2 > Clique em Data > Botão de validação de dados > Validação de dados > Permitir: Listar > Fonte: =uniqhall > Ok

Lista exclusiva secundária com base em apenas um valor de célula escolhido na primeira lista suspensa.

Crie um intervalo com nome dinâmico em Fórmulas > Gerenciador de nomes > Novo > nomeie-o como room > coloque =OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B$2:$B$1000)) no campo "Refere-se a:" > Fechar

Crie uma lista única exclusiva da coluna B. Selecione Planilha2 > selecione B2 > escreva "=INDEX(room, MATCH(0, COUNTIF($B$1:B1, room)+(order<>Sheet1!$D$2), 0))" + CTRL + SHIFT + ENTER > Copie a célula B2 e cole-a até onde for necessário.

Crie um intervalo com nome dinâmico para obter uma lista única exclusiva em Fórmulas > Gerenciador de nomes > Novo > nomeie-o como uniqroom > coloque =OFFSET(Sheet2!$B$2, 0, 0, COUNT(IF(Sheet2!$B$2:$B$1000="", "", 1)), 1) no campo "Refere-se a:" > Fechar

Criar lista suspensa > Selecione Folha1 > Selecione a célula D5 > Relógio nos dados > Botão de validação de dados > Validação de dados > Permitir: Listar > Fonte: =uniqroom > Ok

Espero que isso resolva seu problema até certo ponto:)

    
por 02.07.2012 / 12:31
1

Você realmente não pode usar a mesma célula para isso.

O que você pode fazer é usar a célula ao lado dela. Embora pareça que a resposta de Robert Schmidts funcionará, um método alternativo (e para minha mente mais simples) para o mesmo recurso seria listado aqui .

Ele usa o mesmo tipo de ideia, mas requer apenas uma fórmula simples e simples. A partir da descrição do seu problema, você realmente não precisa de Dynamic Ranges (legal como eles são).

A essência do método é organizar as seleções do usuário em uma única tabela com a primeira seleção à esquerda, depois cada uma das seleções subsequentes é listada em uma coluna diferente à direita.

por exemplo. Corredor # 34 | Quarto 1 | Sala 2 | Quarto 3 .....

Em seguida, usando o Gerenciador de Nomes e os nomes criados a partir da ferramenta de seleção, você atribui automaticamente cada Corredor na primeira coluna como um 'Nome' às salas na mesma linha.

Finalmente, você usa o recurso Validação de dados por lista para criar suas listas suspensas, para a seleção de Corredor e uma segunda para a seleção de salas. Você faz o segundo dependente do primeiro usando uma fórmula simples = INDIRECTO na validação de dados da segunda coluna.

Eu sugeriria ir até a seção de comentários para que, como usuário, tenha indicado que você pode usar a função = SUBSTITUTE para lidar com os espaços em seus valores de Corredor e Sala.

    
por 04.09.2014 / 11:35