数组Excel中的随机string

我只是想知道如果任何人都可以在Excel中解决一个简单的查询。 基本上我想从数组中随机生成一个string。

我拥有的公式是这样的:

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

这个工作,但是,每当我切换工作表中的值改变,并没有固定一次随机select。

有人有主意吗?

转到选项 – >公式 – >启用迭代计算
然后在B1中使用这样的公式:

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

如果你清空A1,那么B1也是空的。 如果你把任何东西放在A1中,那么B1将随机select,并保持它,直到你再次清空A1(B1也将再次为空)

或者只是复制你的公式,并粘贴“价值只”…但公式将消失… … –

你可以使用自引用的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的自我引用

基本上公式说如果你已经有一个值,那么不刷新它,但如果你没有一个值,然后从传入的列表中随机select一个值。

如果你按F2(编辑单元格)并按下回车键,你将强迫它重新计算并得到一个新的值(或者等于randbetween的值),如果按下F9(重新计算)它不会改变。