Defaltar condicional na lista de validação de dados

1

EDIT No. 2

* Ok, minhas articulações anteriores do meu problema foram, como salientado, bastante lixo. Essa edição reformula a pergunta de maneira mais direta, resume o contexto e fornece dados de amostra.

DADOS DE AMOSTRA

Col 1   Col 2 RESET? UNIQUE VALUES
A       A     yes    A
C       C            B
D       D            C
A       A            D
B       B
A       A
D       D
C       C

Note que, para replicar o meu problema, a ferramenta de validação de lista deve ser usada para criar uma lista suspensa para cada célula na Col 2, onde os itens da lista são A, B, C, D. Note, Somente Col 1 e Col 2 (+ listas suspensas) fazem parte do problema.

O RESET? A célula faz parte da solução potencial / como eu gostaria idealmente que a solução aparecesse.

A coluna de valores exclusivos é simplesmente por conveniência ao criar as listas suspensas. (Veja a fórmula na seção de tentativas).

DESCRIÇÃO

Eu tenho duas colunas, Col 1 & Coluna 2. Como pode ser visto na amostra acima, ambos são inicialmente idênticos. No entanto, cada célula em Col 2 tem uma lista suspensa, que é uma lista dos valores exclusivos em Col 1.

Até agora tão fácil. O problema é que na realidade minhas colunas são muito mais longas do que a minha amostra, então depois de brincar com Col 2, eu posso querer restaurar / redefini-la de volta aos seus valores iniciais (isto é, retorná-la aos seus valores iniciais, igual a Col 1) .

PERGUNTA

Eu preciso de um botão que "redefina" uma coluna contendo listas suspensas para que seus valores correspondam aos de outra coluna.

CONTEXTO

Na minha aplicação Col 1 é para referência, enquanto Col 2 é uma coluna de contador de fatos onde um usuário pode alterar um valor para qualquer um dos quatro valores possíveis (novamente, A, B, C ou D neste exemplo), para veja o efeito que isso tem em outras colunas.

Depois de brincar com Col 2, o usuário desejará redefinir Col 2 com seus valores padrão, que são aqueles contidos em Col 1. Em outras palavras, o valor padrão de Col 2 é condicional em Col 1.

DIFICULDADES & TENTATIVAS

A principal dificuldade parece ser a tentativa de aplicar tanto uma fórmula como uma lista suspensa a uma célula.

Eu tentei usar uma fórmula IF na célula, mas isso exclui a lista suspensa

Eu também tentei usar a fórmula a seguir na source da caixa de configuração de validação da lista

Fórmula na célula B2 *:

=IF(C2="yes",A2,D2:D5)

* onde as colunas têm uma correspondência intuitiva com os dados da amostra acima; isto é, Col 1 é o mesmo que a coluna A; A coluna D é VALORES ÚNICOS).

Mas isso apenas restringe a opção disponível na lista. Se eu pudesse obter esse valor para preencher a célula sem ser clicado manualmente, essa seria uma solução perfeita. (Na minha primeira edição, abaixo, usei a função INDEX para tentar conseguir isso, mas não funcionou.)

Eu não tentei nenhuma abordagem de VBA porque não estou familiarizado com o idioma, mas estou disposto a tentar, se isso parecer frutífero.

NOTAS e amp; ERRATA

Por favor, perdoe se eu abusei da terminologia em termos de lista suspensa vs validação de lista. Espero que sejam intercambiáveis.

PERGUNTA ORIGINAL

Eu tenho duas colunas, X_1 e amp; X_2. Imagine que X_1 tem valores que observo na realidade - contendo, digamos, quatro valores únicos, sobre N observações. X_2 é uma variável contra-factual, o que significa que eu permito que o usuário mude X_2 para qualquer um dos quatro valores de X_1, através de uma lista suspensa. Isto tem consequências a jusante em termos de uma função que eu uso para prever algum Y.

O problema é que N é um número muito grande, então levaria muito tempo para resetar X_2 manualmente.

O que eu estou procurando, então, é um botão que pode redefinir a lista em X_2 de acordo com o valor correspondo em X_1.

EDITAR:

Como mostra a captura de tela, quando a célula de reinicialização (ou seja, D2) == "sim", a fórmula abaixo restringe a lista suspensa a apenas um valor; o que corresponde a X_1; caso contrário, ele terá todos os quatro valores exclusivos de X_1, que estão contidos em uma lista em G2: G5.

Isso é quase o que eu quero, mas o problema é que o usuário ainda tem que selecionar o valor restrito. Atualmente, estou procurando uma maneira de preencher a célula com o primeiro valor do lis (daí a função INDEX), mas até agora não obtive êxito.

Fórmula:

=IF($D$2="yes";INDEX($A$2;1);$G$2:$G$5)

A lista na célula selecionada contém apenas "A" porque o RESET é definido como "yes"; caso contrário, a lista conteria A, B, C, D. O problema é que "A" não é preenchido automaticamente.

    
por SeánMcK 10.08.2018 / 20:16

1 resposta

0

A solução, ao que parece, foi bastante simples.

Private Sub CommandButton1_Click()
Range("B:B").Value = Range("A:A").Value
End Sub

Onde A e B correspondem a X_1 e X_2 na pergunta, respestivamente. O "botão" RESET que eu tinha incluído pode ser cuidado pelo CommandButton, que eu não sabia que existia.

Para ser explícito sobre o que isso faz:

  • B é uma coluna com listas suspensas que eu posso brincar com B ao meu conteúdo do coração
  • Quando terminar, posso pressionar meu botão e presto! Todos os valores de B retornam aos seus valores padrão, que é igual a A.

A minha pergunta era claramente complicada demais para uma tarefa tão simples, mas para ser honesta eu fui desprevenida em massa por como a funcionalidade padrão do CommandButton é exatamente a que eu preciso (em particular que não Remover / excluir minhas listas suspensas uma vez que foi usado). Talvez seja essa a beleza de retornar ao software que foi projetado para minimizar os custos de entrada para novos usuários!

    
por 16.08.2018 / 20:33