Thanks again for kind feedback. Taking a third validation list into account, this should do the trick:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, i As Long
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = vbNullString Then Exit Sub
If Intersect(Range("E4:F4"), Target) Is Nothing Then Exit Sub
a = Range("A2", Range("A" & Rows.Count).End(xlUp)).Resize(, 3).Value
With CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a, 1)
If Target.Address = "$E$4" Then
If a(i, 1) = Target.Value Then .Item(a(i, 2)) = Empty
Else
If a(i, 1) = Target(, 0).Value And a(i, 2) = Target.Value Then .Item(a(i, 3)) = Empty
End If
Next
If .Count Then
Target.Resize(, 2).Offset(, 1).Validation.Delete
Target.Offset(, 1).Validation.Add 3, , , Join(.keys, ",")
Application.EnableEvents = False
Target.Offset(, 1).ClearContents
Application.EnableEvents = True
End If
End With
End Sub
Cheers
Bookmarks