Хорошо. Я сделал это через VBA. Скажем, ваша первоначальная проверка в D2. Поместите это в код листа1 (щелкните правой кнопкой мыши - посмотрите код)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(True, True) = "$D$2" Then
Select Case Target
Case "A"
Call Macro1
Case "B"
Call Macro2
Case "C"
Call Macro3
Case "D"
Call Macro4
Case "E"
Call Macro5
Case Else
'Do nothing
End Select
End If
End Sub
Как только вы получите это в коде листа, создайте модуль и используйте это:
Sub Macro1()
Range("E2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$A$9:$A$13"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Macro2()
Range("E2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$B$9:$B$13"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Macro3()
Range("E2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$C$9:$C$13"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Macro4()
Range("E2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$D$9:$D$13"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Macro5()
Range("E2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=$E$9:$E$13"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Все, что вам нужно сейчас, это изменить координаты списка, и все будет отлично работать.