Предположим, A1:A3 - подписи к продукту, B1:B3 - выбор пользователя.
Поместите следующий код в модуль листа:
Private Sub Worksheet_Change(ByVal Target As Range)
Static busy As Boolean
Dim r As Range, r1 As Range, r0 As Range
If busy Then Exit Sub
Set r0 = Range("B1:B3") ' User selection range
busy = True
Set r = Application.Intersect(Target, r0)
If r Is Nothing Then
busy = False
Exit Sub
Else
For Each r1 In r
If r1.Value = "yes" Then
r0.Value = "no"
r1.Value = "yes"
Exit For
Else
r1.Value = "no"
End If
Next
busy = False
End If
End Sub
Помните - при вставке диапазона в диапазон выбора пользователя самое верхнее "да" принимается, а все остальные игнорируются. Если есть значение "да", все другие значения заменяются на "нет".
Возможно, некоторые ошибки вызвали неправильный результат, в некоторых особых случаях существует - отладить их.
Конечно, любые литералы могут быть отредактированы или заменены переменными, хранящими правильные значения.