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

时间:2017-05-15 17:48:26

标签: vba excel-vba random excel

我一直在搜索和搜索,但找不到合适的方法。我使用多个变量和值来设置另一个单元格的值。

我使用这个公式来完成我现在需要的单元格" E4"在Sheet" Turn_Travel";

=LOOKUP(RAND(),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)))

现在我点击F9然后刷新我的工作表并生成一个新的随机数,它会改变我的结果。

我试图使用VBA生成随机数,然后让小区" E4"在Sheet" Turn_Travel"包含上面的公式和随机数的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

1 个答案:

答案 0 :(得分:2)

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

此外,您需要将变量声明为double,以获得介于0和1之间的数字。如果您将其声明为long,则会得到0或1.

您可以使用Rnd获得0到1之间的随机数。

如果你想要有限的小数,例如2位小数,你可以使用Format(Rnd, "#0.00")