Вам нужен UDF с памятью, чтобы он знал, изменилась ли ячейка
Этот UDF вернет новое случайное значение при изменении ссылки на вызов, в противном случае возвращает последнее случайное значение (т.е. без изменений)
Также возвращает пустое значение, если исходная ячейка пуста (может или не может быть тем, что вам нужно?)
Примечание: проблема в том, что значения Static
теряются при закрытии листа, поэтомузначение будет меняться при каждом открытии листа.
Function randonce(r As Range)
Static trigger As Variant
Static v As Double
If r <> trigger Then
v = Rnd
trigger = r
End If
If Len(r) <> 0 Then
randonce = v
Else
randonce = vbNullString
End If
End Function