数组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(重新计算)它不会改变。