【问题标题】:how to stop / freeze / pause volatile NOW / TODAY / RAND / RANDBETWEEN? [duplicate]NOW / TODAY / RAND / RANDBETWEEN 如何停止/冻结/暂停波动? [复制]
【发布时间】:2018-10-07 18:52:04
【问题描述】:

是否有一种简单的方法(无需大量脚本)如何禁用谷歌电子表格中 =NOW() =TODAY() =RAND() =RANDBETWEEN() 等易失性函数的自动重新计算?

在构建密钥生成器的情况下,我需要处理多个 RANDBETWEEN 输出,每次单元格更改都会重新计算,而那些 RANDBETWEEN 数字不能在我的工作表中保留一周,我一直在编辑。

我的大部分谷歌搜索告诉我,这不能完成,因为这些函数是不稳定的,这只能在 MS Excel 中通过在“手动”上设置计算来完成。这些答案中的大多数也建议复制/粘贴此类挥发物,但如果它们太多,这可能会很麻烦......

【问题讨论】:

  • 您似乎假设会涉及“繁重的脚本”。事实上,非常简单的脚本就足够了:一个产生相当于 NOW() 或 RAND() 的值的函数,它只在需要时运行,例如从电子表格菜单注册时。

标签: random google-sheets spreadsheet


【解决方案1】:

实际上,有一个简单的解决方案可以实现这些 volatile 函数的“冻结”(30 分钟)。 (虽然,它可能不是一个“聪明的”,但到目前为止它非常有效)

这里有一个小教程,用于生成两个实现 RANDBETWEEN 的“冻结”键:

  1. 创建新的电子表格并将其命名为“KEY1
  2. 为范围 A1:P1 设置值,例如:
  3. 将此插入单元格A3

    =index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))& index($A$1:$P$1;RANDBETWEEN(1;counta($A$1:$P$1)))

  4. 创建整个电子表格的副本/副本并将其命名为“KEY2

  5. 创建新的(第三个)电子表格并将其命名为“ALL_KEYS

  6. 为所有 3 个电子表格启用共享,并在高级选项中选择“可以编辑”(请注意,如果不执行此步骤,所有操作都会导致 #REF错误,因为这些电子表格需要相互链接)

  7. 在第 3 个电子表格中设置单元格 A1A2 如下:

    =IMPORTRANGE("paste-here-whole-url-of-KEY1-spreadsheet";"Sheet1!$A$3") =IMPORTRANGE("paste-here-whole-url-of-KEY2-spreadsheet";"Sheet1!$A$3")

  8. 创建新的 (4th) 电子表格并根据需要命名(并启用共享)

  9. 将每个公式插入任何单元格(甚至是整个电子表格中的任何工作表标签)示例:

    D3 =IMPORTRANGE("paste-here-whole-url-of-ALL_KEYS-spreadsheet";"Sheet1!$A$1") D4 =IMPORTRANGE("paste-here-whole-url-of-ALL_KEYS-spreadsheet";"Sheet1!$A$2")

  10. 右键单击单元格 C3 并选择“数据验证...”,然后作为 Criteria 选择“复选框”并选中“使用自定义单元格值”。然后作为 TRUE 输入数字 1 和 FALSE 输入数字 0

  11. C4 单元执行相同操作(这将作为 on/on 开关而不是 on/off)

  12. 现在转到电子表格“KEY1”和“KEY2”,并将其插入到A2单元格中:

    "KEY1" -> A2 =IMPORTRANGE("paste-here-whole-url-of-4th-spreadsheet";"Sheet1!$C$3") "KEY2" -> A2 =IMPORTRANGE("paste-here-whole-url-of-4th-spreadsheet";"Sheet1!$C$4")

  13. 关闭电子表格“KEY1”、“KEY2”和“ALL_KEYS”,并且不再打开它们

  14. 完成!额外步骤:为确保这两个随机生成的密钥是唯一的,您可以在“ALL_KEYS”电子表格中添加 =IF($A$1<>$A$2;"unique";"reload") 之类的警报,然后将其导入到 4th 电子表格中,例如=IMPORTRANGE("paste-here-whole-url-of-ALL_KEYS-spreadsheet"; "Sheet1!a10")

SUM: 现在,每当您启用/禁用“开关”时,它都会为您生成随机的新密钥,该密钥将一直留在那里直到下一次按下开关(甚至重新加载浏览器选项卡都不会改变这些随机生成的密钥)。如您所见,“KEY1”中的key1和“ALL_KEYS”和“中的key1有轻微的偏移第 4 次”,但这并不值得......

...也许这可以用作安全措施来检查谷歌是否有人打开过你的个人电子表格;)

【讨论】:

    【解决方案2】:

    这是我在需要创建随机分数生成器时使用的一种解决方法。

    我创建了一个单独的选项卡,其中包含正在生成的随机信息。然后我使用宏记录器将随机选项卡中的复制+粘贴值记录到我的主选项卡上。最后,我将宏链接到一个按钮。

    这样随机数生成器可能会随着每次更新而不稳定,但我只在需要时才导入随机信息。

    这有点脚本,但不会太繁重。

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2022-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2013-05-29
      相关资源
      最近更新 更多