Вы можете использовать себя ссылающийся UDF, что-то, как это будет работать:
Function RandInArray(MyString As String, ByRef Target As Range)
Dim MyArr As Variant
If Target.Text = 0 Then
MyArr = Split(MyString, ",")
RandInArray = MyArr(Application.WorksheetFunction.RandBetween(LBound(MyArr), UBound(MyArr)))
Else
RandInArray = Target.Value
End If
End Function
В B1 у меня есть формула: =RandInArray("Day,Night,Mixed",B1)
Обратите внимание его само упоминание B1
В принципе формула говорит, что если u уже имеет значение, но не обновляет его, но если у вас нет значения, выберите один случайный случай из списка.
Если вы нажмете F2 (отредактируйте ячейку) и нажмите enter, вы заставите его пересчитайте и получите новое значение (или то же, что и правило randbetween), если вы нажмете F9 (пересчитать), он не изменится.
Возможно, это не лучшее решение, но вы можете отключить автоматические вычисления. –
RANDBETWEEN является изменчивым, так как в нем будет пересчитываться каждый раз, когда рабочая книга будет пересчитываться. Поэтому, оставляя лист, он пересчитывает. Единственное исправление заключается в копировании и вставке значений. –
Я также ставлю, если вы сохранили все ваши случайные числа в другой электронной таблице, а затем привязали их к своим формулам, они не изменились бы. –