2015-06-18 2 views
0

Проблема довольно проста, но я не могу ее решить или найти ответ.Excel, хотите создать раскрывающийся список на основе «да» Cell

У меня есть одна ячейка A2, которая активируется с да/нет в зависимости от того, что пользователь входит в другое место.

Я хотел бы создать раскрывающийся список в другой ячейке A3, только если A2 имеет «да» внутри. Из того, что я могу сказать, это можно сделать только с помощью Data Validation, но он продолжает бросать ошибки.

ответ

3

С помощью Data Validation для выпадающего списка, когда вы его создаете, вы можете использовать инструкции «If». Выберите «Список» из «allow», затем для Source, что-то вроде =if(A2="Yes",B2:B6,C2). Заметьте, я предположил, что ваш список данных B2: B6, а в C2 - некоторая строка, которую вы хотите вернуть, если A2 не является «Да».

Примечание: Если A2 не является «Да», и вы хотите, чтобы в списке в A3 был указан «Нет списка», вы не можете просто использовать эту строку в инструкции IF для проверки - вам нужно поставить эту строку в, то есть C2, и используйте приведенную выше формулу. Невозможно поместить строки в инструкцию IF проверки достоверности данных по какой-либо причине.

+1

Отлично! Я пытался получить результат "", если проверка данных не удалась, но ссылка на ячейку с "" работает! tyvm! –

+0

@JeyLegarie - рада помочь! Если это ответ, не могли бы вы пометить его как таковой (нажмите галочку под стрелками вверх/вниз). – BruceWayne

1

EDIT: О, ну, похоже, для этого использования VBA совершенно не нужно. Я не удаляю ответ, потому что это сработает, но я не рекомендую это более простому методу!

Я бы использовал VBA для этого. Если вы не боитесь запотевать каким-то кодом, я думаю, что это будет работать. Если вы абсолютный ноль в VBA, я могу дать более подробную помощь.

Откройте редактор Visual Basic и копировать/вставить этот:

'this means it activates when there is change in your worksheet: 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)   
    If Not Intersect(Target, Range("A2")) Is Nothing Then 'Checks that the change occurs in the cell A2  

     If Range("A2") = "Yes" Then 'only enters this if it changed to yes 
      With Range("A3").Validation 'this little block creates the list. More on this after the code 
       .delete 
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
       xlBetween, Formula1:="=Paramètres!$C$1:$C$5" 
      End With 
     End If 

     If Range("A2") = "No" Then 'only does this if it changed to no 
      Range("A3").Validation.delete 'this deletes the list.      
     End If 

    End if 
End sub 

Так что список, в нашем случае, создается или удаляется, когда происходит изменение в ячейке A2. Список содержит элементы, которые вам нужно записать в ячейках C1-C5. (пример: В c1 напишите «привет», в c2 напишите: «до свидания» и т. д.). Если вы хотите больше или меньше входов, вы можете изменить C1 на C3 или C10, как хотите. Вы также можете сделать список в другом месте (например, столбец E), изменив C. После написания вашего списка в столбце я предлагаю скрывать этот столбец, потому что нет необходимости его видеть.

Смежные вопросы