Добрый день! Прошу помочь с условием ЕСЛИ. Как забить формулу в ячейку D1, так чтобы при значении ячейки С1="Заклепка" значение ячейки принимало значение 1, а при при значении ячейки С1="Болт" в ячейке D1 появлялся выпадающий список со значениями 0,5;0,7;0,9? =ЕСЛИ(C1="Заклепка";1;СПИСОК(0,5;0,7;0,9))
Добрый день! Прошу помочь с условием ЕСЛИ. Как забить формулу в ячейку D1, так чтобы при значении ячейки С1="Заклепка" значение ячейки принимало значение 1, а при при значении ячейки С1="Болт" в ячейке D1 появлялся выпадающий список со значениями 0,5;0,7;0,9? =ЕСЛИ(C1="Заклепка";1;СПИСОК(0,5;0,7;0,9))Diman1990
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("c1:c10000")) Is Nothing Then If Target.Count > 1 Then Exit Sub 'избежать ошибку If Target <> "Заклепка" Then If Target.Offset(0, 1) = 1 Then Target.Offset(0, 1).Delete 'убрать не нужную 1 With Target.Offset(0, 1).Validation 'создаем список .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Болт" End With Else Target.Offset(0, 1).Delete 'удалить список, если надо конечно Target.Offset(0, 1) = 1 End If End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("c1:c10000")) Is Nothing Then If Target.Count > 1 Then Exit Sub 'избежать ошибку If Target <> "Заклепка" Then If Target.Offset(0, 1) = 1 Then Target.Offset(0, 1).Delete 'убрать не нужную 1 With Target.Offset(0, 1).Validation 'создаем список .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Болт" End With Else Target.Offset(0, 1).Delete 'удалить список, если надо конечно Target.Offset(0, 1) = 1 End If End If End Sub
я тоже, но есть метод научного тыка. макрос находится в модуле листа (ПКМ по ярлыку листа, исходный текст) срабатывает на событие изменения ячеек в диапазоне c1:c10000
With Target.Offset(0, 1).Validation 'создаем список .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Болт" End With
я тоже, но есть метод научного тыка. макрос находится в модуле листа (ПКМ по ярлыку листа, исходный текст) срабатывает на событие изменения ячеек в диапазоне c1:c10000
With Target.Offset(0, 1).Validation 'создаем список .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Болт" End With
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C1")) Is Nothing Then 'если изменяем в том числе и ячейку С1 Range("D1").Validation.Delete 'убираем проверку данных из D1 Select Case Range("C1") 'Если С1 Case "Заклепка" 'равно Заклепка, то Range("D1") = 1 'D1=1 Case "Болт" 'равно Болт, то Range("D1") = "Выбери" 'D1="выбери" Range("D1").Validation.Add Type:=xlValidateList, Formula1:="=Болт" ' в D1 - проверку данных End Select End If End Sub
[/vba]
Еще вариант с макросом [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C1")) Is Nothing Then 'если изменяем в том числе и ячейку С1 Range("D1").Validation.Delete 'убираем проверку данных из D1 Select Case Range("C1") 'Если С1 Case "Заклепка" 'равно Заклепка, то Range("D1") = 1 'D1=1 Case "Болт" 'равно Болт, то Range("D1") = "Выбери" 'D1="выбери" Range("D1").Validation.Add Type:=xlValidateList, Formula1:="=Болт" ' в D1 - проверку данных End Select End If End Sub
Pelena, минус в том, что если выбран болт и значение не равное 1, то при изменении значения на заклепку придется снова выбирать 1. Можно как-нибудь придумать, чтобы 1 автоматически вводилась в ячейку при выборе заклепки?
Pelena, минус в том, что если выбран болт и значение не равное 1, то при изменении значения на заклепку придется снова выбирать 1. Можно как-нибудь придумать, чтобы 1 автоматически вводилась в ячейку при выборе заклепки?Diman1990