我只是想知道是否有人可以在Excel中解决一个简单的查询。基本上我想从数组中随机生成一个字符串。
我的公式是:
=INDEX({"Day","Night","Mixed"},RANDBETWEEN(1,3))
然而,无论何时我在工作表之间切换,值都会发生变化,并且随机选择后不会修复。
有人有什么想法吗?
答案 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(重新计算)它将不会改变。