Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA随机化函数,用于使用变量、命名范围和间接函数更改单元格公式_Vba_Excel_Random - Fatal编程技术网

VBA随机化函数,用于使用变量、命名范围和间接函数更改单元格公式

VBA随机化函数,用于使用变量、命名范围和间接函数更改单元格公式,vba,excel,random,Vba,Excel,Random,我一直在寻找,找不到一个合适的方法来做这件事。我使用多个变量和值来设置另一个单元格的值 我用这个公式来完成我现在需要的,在表格“Turn_Travel”的单元格“E4”中 现在我只需点击F9,它就会刷新我的工作表并生成一个新的随机数,从而改变我的结果 我正试图使用VBA生成随机数,然后让工作表“Turn_Travel”上的单元格“E4”包含上面的公式以及随机数的VBA变量 这是我的尝试,但我得到了一个错误。有人能指出我哪里出了问题吗 Sub TravelRoll() Randomi

我一直在寻找,找不到一个合适的方法来做这件事。我使用多个变量和值来设置另一个单元格的值

我用这个公式来完成我现在需要的,在表格“Turn_Travel”的单元格“E4”中

现在我只需点击F9,它就会刷新我的工作表并生成一个新的随机数,从而改变我的结果

我正试图使用VBA生成随机数,然后让工作表“Turn_Travel”上的单元格“E4”包含上面的公式以及随机数的VBA变量

这是我的尝试,但我得到了一个错误。有人能指出我哪里出了问题吗

 Sub TravelRoll()

     Randomize
     Dim TheRoll As Long
     TheRoll = ((1 - 0 + 1) * Rnd + 0)
     Worksheets("Turn_Travel").Range("E4").Formula = "=LOOKUP("&TheRoll&",INDEX(INDIRECT(""Region""&VLOOKUP($B$4,RegionListTable,MATCH(""Region #"",RegionListHeader,0),FALSE)&$C$4&""Info""),0,MATCH(""Perct."",INDIRECT($C$4&""Header""),0)),INDEX(INDIRECT(""Region""&VLOOKUP($B$4,RegionListTable,MATCH(""Region #"",RegionListHeader,0),FALSE)&$C$4&""Info""),0,MATCH(""Weather"",INDIRECT($C$4&""Header""),0)))"

 End Sub

字符串连接运算符(&)前后应该有空格

此外,您还需要将变量声明为double,以获得介于0和1之间的数字。如果你声明它,只要你得到0或1

您可以使用
Rnd
使随机数介于0和1之间


如果希望有有限的小数,例如2个小数,则可以使用
格式(Rnd,“#0.00”)

字符串连接运算符(&)前后应有空间

此外,您还需要将变量声明为double,以获得介于0和1之间的数字。如果你声明它,只要你得到0或1

您可以使用
Rnd
使随机数介于0和1之间


如果您想要有有限的小数,例如2个小数,您可以使用
格式(Rnd,“#0.00”)

这可能与此无关,但您如何尝试在前后放置空格,就像这样
(“&TheRoll&”,
Wow,那太简单了。哈哈。谢谢。另外,我需要我的Rnd变量介于0和1之间。我认为我当前的公式不正确。这样做正确吗?首先,你需要声明它为double。如果你声明它,只要你得到0或1。其次,你可以使用
Rnd(1)
设置一个介于0和1之间的随机数。如果您想要有限的小数,例如2个小数,可以使用
格式(Rnd(1),“#0.00”)
“我遇到了一个错误”不是很具体。您应该包括这是一个编译时错误的事实,以及确切的消息,以及VBE在抱怨您的代码时突出显示的语句/标记。@Mat's Mug是的,我认为编辑器可能已经自动更正了它,所以我谨慎地回答。这可能与您如何在前后放置空格无关&就像这个
(“&TheRoll&”,
哇,那太简单了。哈哈。谢谢。另外,我需要我的Rnd变量介于0和1之间。我认为我当前的公式不正确。这样做正确吗?首先你需要声明它为double。如果你声明它,只要你得到0或1。其次,你可以使用
Rnd(1)
设置一个介于0和1之间的随机数。如果您想要有限的小数,例如2个小数,可以使用
格式(Rnd(1),“#0.00”)
“我遇到了一个错误”不是很具体。你应该包括这是一个编译时错误的事实,以及确切的消息,以及VBE在抱怨你的代码时突出显示的语句/标记。@Mat's Mug是的,我认为编辑器可能已经自动更正了它,所以我谨慎地回答。实际上,你可以调用
Rnd
(无参数),该函数返回一个介于0和1之间的数字。解释参数:任何大于0的数字都将导致序列中的下一个随机数。实际上,您只需调用
Rnd
(无参数),函数返回一个介于0和1之间的数字。解释参数:任何大于0的数字都将导致序列中的下一个随机数。
 Sub TravelRoll()

     Randomize
     Dim TheRoll As Long
     TheRoll = ((1 - 0 + 1) * Rnd + 0)
     Worksheets("Turn_Travel").Range("E4").Formula = "=LOOKUP("&TheRoll&",INDEX(INDIRECT(""Region""&VLOOKUP($B$4,RegionListTable,MATCH(""Region #"",RegionListHeader,0),FALSE)&$C$4&""Info""),0,MATCH(""Perct."",INDIRECT($C$4&""Header""),0)),INDEX(INDIRECT(""Region""&VLOOKUP($B$4,RegionListTable,MATCH(""Region #"",RegionListHeader,0),FALSE)&$C$4&""Info""),0,MATCH(""Weather"",INDIRECT($C$4&""Header""),0)))"

 End Sub