来自数组Excel的随机字符串

时间:2016-02-25 22:47:12

标签: excel excel-formula formula

我只是想知道是否有人可以在Excel中解决一个简单的查询。基本上我想从数组中随机生成一个字符串。

我的公式是:

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

然而,无论何时我在工作表之间切换,值都会发生变化,并且随机选择后不会修复。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

如果您清空A1,那么B1也将为空。如果你在A1中放入任何东西,那么B1将随机选择并保持不变直到你再次清空A1(其中B1也将再次为空)

或者只是复制你的公式并粘贴“仅限值”......但公式将会以这种方式消失......

答案 1 :(得分: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的自引用

基本上,公式显示如果您已经有值,则不要刷新它,但如果您没有值,则从传入的列表中随机选择一个。

如果你点击F2(编辑单元格)并按回车键,你将强制它重新计算并获得一个新的(或与rand between规则相同)值,如果按F9(重新计算)它将不会改变。