我正在尝试为学校的一个大型项目制作零件编号生成器。我需要能够使用函数=RANDBETWEEN(0,999999)
生成零件编号的一部分。问题是更新=RANDBETWEEN(0,999999)
。如果我引用单元格,那么所有零件编号最终都会得到相同的随机数。我需要一个函数来保存旧的随机数,但保留=RANDBETWEEN(0,999999)
更新以生成下一个零件的新号码的能力。我已经搜索了两天的方法来做到这一点。希望有人能帮忙。我没有使用 VBA 的经验,想把它作为一个函数保留下来,以便团队的所有用户都可以使用它。
答案1
没有答案。
请注意,RAND()、RANDBETWEEN() 和所有类似函数都会在工作表的每次重新计算时生成新数字。
F9 或 SHIFT+CTRL+F9(在 LibreOffice 中)启动重新计算,这将使您能够看到问题。
也不能保证生成的数字是唯一的。
下面这个函数可能是手动或键盘启动宏的起点,用于将某个单元格设置为以零为前导的六位随机数。
未经测试(没有可用的 Excel,可能至少有一两个错误)
函数 rndNum(单元格) rndNum=WorksheetFunction.RANDBETWEEN(0,999999) 如果单元格<>“”则 范围(单元格).Value="'" & WorksheetFunction.TEXT(rndNum,"000000") 万一 结束函数
答案2
您可以创建一个命名函数,EVAL
在命名管理器中说:
=LAMBDA(x,EVALUATE(x))
现在您可以通过以下方式在工作表中调用它:
=EVAL("RANDBETWEEN(0,999999)")
这将创建一个随机数,只有当您在该精确单元格中重新应用该公式时,该数才会改变。
请注意,这将在保存时触发您的工作簿为 xlsm,否则您将丢失命名函数(随机数将保留在原位)。