2016-02-25 5 views
2

Мне просто интересно, может ли кто-нибудь решить простой запрос в Excel. В принципе, я хочу, чтобы случайная строка из массива.Случайная строка из массива Excel

формула у меня есть это:

=INDEX({"Day","Night","Mixed"},RANDBETWEEN(1,3)) 

Это работает, однако, всякий раз, когда я переключаюсь между таблицами значения меняются и не фиксируются один раз случайно выбранных.

У кого-нибудь есть идеи?

+1

Возможно, это не лучшее решение, но вы можете отключить автоматические вычисления. –

+2

RANDBETWEEN является изменчивым, так как в нем будет пересчитываться каждый раз, когда рабочая книга будет пересчитываться. Поэтому, оставляя лист, он пересчитывает. Единственное исправление заключается в копировании и вставке значений. –

+0

Я также ставлю, если вы сохранили все ваши случайные числа в другой электронной таблице, а затем привязали их к своим формулам, они не изменились бы. –

ответ

1

Перейти к опциям -> формула -> позволяет итерационный расчет
Затем использовать формулу, как это в B1:

=IF(A1="","",IF(B1="",INDEX({"Day","Night","Mixed"},RANDBETWEEN(1,3)),B1) 

Если вы выплескивать A1, то B1 также будет пустым. Если вы поместите что-нибудь в A1, тогда B1 будет выбирать случайным образом и оставаться с ним до тех пор, пока вы снова не выпустите A1 (где B1 снова будет пуст)

Альтернативно просто скопируйте формулу и вставьте только значения «...» формула уже не будет таким образом ...

0

Вы можете использовать себя ссылающийся 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 (пересчитать), он не изменится.

+0

Вы по-прежнему получите уведомление о круговой ссылке позже, если итеративный расчет не включен. однако: включение этого, делает UDF устаревшим для моих глаз ... лучше ссылаться на другую ячейку в качестве триггера (таким образом вы можете избежать изменений внутри настроек) –

Смежные вопросы