stu*_*eek 8 excel vba excel-vba excel-formula
我正在寻找一种在Excel中计算一次随机数的方法.所以它在第一次被调用时计算,但之后它不会改变.
所以例如,如果我在B1中有类似的东西RANDONCE(A1)
,那么我第一次在A1中放置一个值就会计算一个随机值但是它不会再次改变.或者至少在我再次改变A1之前.
我想这样做,而无需手动重新复制B1将其从公式转换为此处所述的值.使用宏很好.
小智 5
我想我有一个更简单的方法来做到这一点。完成您的电子表格,然后对该列数字应用 =RANDBETWEEN 函数。然后这样做:
现在您拥有最近创建的值并且它们是静态的。
您需要一个具有记忆功能的 UDF,以便它知道单元格是否已更改
当引用的调用发生变化时,此 UDF 将返回一个新的随机值,否则返回最后一个随机值(即没有变化)。
如果源单元格为空白,也返回空白(可能是也可能不是您需要的?)
注意:它存在关闭工作表时值丢失的问题Static
,因此每次打开工作表时该值都会改变。
Function randonce(r As Range)
Static trigger As Variant
Static v As Double
If r <> trigger Then
v = Rnd
trigger = r
End If
If Len(r) <> 0 Then
randonce = v
Else
randonce = vbNullString
End If
End Function
Run Code Online (Sandbox Code Playgroud)