我需要一种使用RAND函数的方法;在这种情况下,RANDBETWEEN;并防止它重新计算而不关闭整个工作表的自动计算。
目前的设置基于此一项功能:
`=IF(A2=TRUE,RANDBETWEEN(B2,C2),"")`
[示例表] (https://i.sstatic.net/65YpFjeB.png)
我需要的是终端用户能够将单元格设置为 TRUE,无论他们选择多少个单元格;不会导致 RAND 重新计算任何已经为 TRUE 的值;然后在生成这些结果时对其进行求和。
因此,用户 1 可能使 A2 和 A3 为 TRUE,然后用户 2 可能使 A4 和 A5 为 TRUE,我需要保留用户 1 的结果,并将它们与用户 2 的结果相加。
我尝试过关闭自动计算,但它破坏了工作表其余部分的太多功能;除非有办法只针对这个范围设置手动计算?但我一直没能找到这样的功能。
我尝试了一些使用颜色来混淆结果的变体,然后在不重新计算的情况下显示出来;但用复选框 true/false 显示它仍然会导致它重新计算。
我看过创建自己的随机数生成器类型的东西;但我认为这超出了我的能力范围。
我尝试在不同的单元格中对结果进行 RAND 运算,然后仅在 true 时返回 that 结果;希望找到一种方法来保留单元格中的最后一个数字,直到复选框变为 FALSE 然后再次变为 TRUE 以将其替换为新数字,但我找不到一种在不创建循环引用的情况下保留单元格中的值的方法无论如何,在变为 false 时都会重新计算自己。
我只标记了 Excel,因为我之前尝试询问并被告知要编辑它,但我无法编辑原始帖子?所以我又发帖了;但要明确的是,我想找到一个也适用于 G-Sheets 的解决方案,反之亦然,如果有一种方法可以在 G-Sheets 上实现,但在 Excel 上不起作用;我会高兴地在任何有a解决方案的平台上重新创建实际工作表的整个其余部分。
更新:解决方案! 至少,对于我(零 VBA 经验)来说,解决这个问题足够,可以继续前进!
将复选框替换为调用宏以执行 RANDBETWEEN 函数并打印到每个结果单元格的按钮。
Private Sub CommandButton1_Click()
Call PrintResult
End Sub
Sub PrintResult()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to
your sheet name
ws.Range("D2").Value = Application.WorksheetFunction.RandBetween(ws.Range("B2").Value, ws.Range("C2").Value)
End Sub
感谢您的提示! @GSerg
更新:解决方案! 至少,对于我(零 VBA 经验)来说,解决这个问题足够,可以继续前进!
将复选框替换为调用宏以执行 RANDBETWEEN 函数并打印到每个结果单元格的按钮。
Private Sub CommandButton1_Click()
Call PrintResult
End Sub
Sub PrintResult()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Change "Sheet1" to
your sheet name
ws.Range("D2").Value = Application.WorksheetFunction.RandBetween(ws.Range("B2").Value, ws.Range("C2").Value)
End Sub
感谢您的提示! @GSerg