在excel中编程一个macros,在a,b之间生成一个随机数

我在Excel中构build一个电子表格,电子表格作为一个数据保持表,它根据需要更新不同的值,我感兴趣的其中一个值本质上是一个随机数生成器。 我已经在excel的单元格里面有了简单的RANDBETWEEN()函数的知识。 然而,这只返回一(1)值,我想能够分配给一个函数,让它每次按下button时返回一个不同的值。 我可以创buildbutton,我有单元格..我不确定为什么我不能链接这两个? 我已经试过通过已经问过这个问题,但没有发现任何超级接近我的问题(虽然我认识到一个擅长Excel的人可能是一个微不足道的问题。)但是我不擅长擅长,而且还在学习所有内部工作和我可以用excel做的事情。

长话短说,有人可以帮我得到一个button,每次点击一个单元格(可以说单元格a1)得到值之间的不同值a,b。

再次抱歉,如果这是微不足道的,我尽我所能做到这一点,我只是没有任何运气。

如果您仍然使用RANDBETWEEN函数,并且只是希望它在命令上生成一个新值,只需按F9强制Excel重新计算所有公式。 RANDBETWEEN将生成一个新的随机数。 (如果不改变数值,只是因为它偶然产生了相同的随机数,一直按F9得到新的随机数。

请注意,更改电子表格中的任何公式也将导致RANDBETWEEN函数生成一个新值。

如果你想要一个新的随机数只在你命令时产生,那么你需要创build一个macros,这个macros可以通过一个button轻松调用。 我假设你根本不熟悉macros,所以下面是一个简单的解决scheme。

以下网站介绍了如何创build一个运行macros的简单button。 (请注意,这种特定的方法只适用于ActiveXbutton,而不是Formsbutton。)

https://www.tutorialspoint.com/vba/vba_excel_macros.htm

你只需要用下面的代码replace他们的例子中的代码(MsgBox“Hi”):

Range("A1") = WorksheetFunction.RandBetween(a,b) 

用你想得到一个随机数的数字replacea和b。 你可以通过几种方法来做到这一点:

如果你总是希望在相同的两个数字之间(例如1和10),你可以将它们硬编码到macros中:

 Range("A1") = WorksheetFunction.RandBetween(1,10) 

如果您希望在同一电子表格上logging的两个数字之间(例如,在单元格B1和B2中),则可以引用单元格:

 Range("A1") = WorksheetFunction.RandBetween(Range("B1"),Range("B2")) 

或者你可以要求在popup的数字:

 a = InputBox("Enter a") b = InputBox("Enter b") Range("A1") = WorksheetFunction.RandBetween(a, b) 

请注意,在button可以使用之前,网站会漏掉一些必须执行的重要步骤:

  1. closuresVBA窗口(实际上不需要,但是不需要将其打开)

  2. 退出devise模式。 在Excel中的“开发人员”选项卡上,“devise模式”button仍应突出显示。 点击它以取消突出显示。 你现在可以点击你的button。

请注意,如果要再次更改button的代码,则需要再次单击devise模式以再次突出显示该button,然后双击该button再次查看代码。

尝试下面

 Private Sub CreateRandom() 'random number between 11 and 100 Debug.Print NewRandom(11, 100) End Sub Private Function NewRandom(ByVal FromLimit As Integer, ByVal ToLimit As Integer) As Integer Randomize randomNumber = Int((ToLimit - FromLimit) * Rnd) + FromLimit NewRandom = randomNumber End Function Private Sub CommandButton1_Click() 'random number between 30 and 100 Sheets("Sheet2").Range("A1").Value = NewRandom(30, 100) End Sub