在Excel中计算静态随机数(计算一次)

stu*_*eek 8 excel vba excel-vba excel-formula

我正在寻找一种在Excel中计算一次随机数的方法.所以它在第一次被调用时计算,但之后它不会改变.

所以例如,如果我在B1中有类似的东西RANDONCE(A1),那么我第一次在A1中放置一个值就会计算一个随机值但是它不会再次改变.或者至少在我再次改变A1之前.

我想这样做,而无需手动重新复制B1将其从公式转换为此处所述的值.使用宏很好.

小智 5

我想我有一个更简单的方法来做到这一点。完成您的电子表格,然后对该列数字应用 =RANDBETWEEN 函数。然后这样做:

  1. 从该列复制结果。
  2. 突出显示该列并选择“选择性粘贴”并选择“值”。

现在您拥有最近创建的值并且它们是静态的。


chr*_*sen 4

您需要一个具有记忆功能的 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)