Как указал @ForwardEd, для этого требуется некоторый VBA. Следующий код сработает, когда что-то изменится в вашем списке уникальных идентификаторов, и проверит, существует ли старое значение в другом списке (ваш 2-й лист). Если оно существует, изменение будет отменено.
Private Sub Worksheet_Change(ByVal Target As Range) Dim vOld As Variant Dim vNew As Variant If Not Intersect([ProductListItemID], Target) Is Nothing Then vNew = Target.Value Application.EnableEvents = False Application.Undo vOld = Target.Value If WorksheetFunction.CountIf([OrdersItemID], Target) > 0 Then MsgBox "Change disallowed" Else Target.Value = vNew 'MsgBox "Change OK" End If Application.EnableEvents = True End If End Sub
Это должно быть в коде для Sheet1. Я предполагаю два именованных диапазона:
ProductListItemID (List of items on Sheet1 to be protected) OrdersItemID (List of ItemID's in 2nd sheet)
Для удобства я включил оба диапазона на одном листе:
Объяснение: Когда в Sheet1 вносится изменение, макрос проверяет, находится ли он в пределах диапазона ProductListItemID. Если это так, он получает измененное значение (vNew), затем отменяет действие и захватывает предыдущее значение (vOld). Затем он проверяет, существует ли значение vOld в диапазоне OrdersItemID. Если это так, ячейка остается со старым значением, в противном случае новое значение восстанавливается.