Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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
Excel 如果单元格A1是某个值,则B1在两个值之间是随机的_Excel_Vba_Random - Fatal编程技术网

Excel 如果单元格A1是某个值,则B1在两个值之间是随机的

Excel 如果单元格A1是某个值,则B1在两个值之间是随机的,excel,vba,random,Excel,Vba,Random,如果单元格是某个值,我想使用VBA在两个值之间分配一个随机数。我有40个随机生成的数字,介于1和12之间,然后我想给这40个数字中的每一个分配一个介于两个值之间的随机数,但这两个值取决于数字是否为1,2,3,…,12。我的代码现在看起来像这样,但出来的数字并不总是在我给出的限制之间。怎么了 Sub measurepoints() Dim i As Integer Dim j As Integer For i = 2 To 41 Cells(i, 1).Value = "=RAN

如果单元格是某个值,我想使用VBA在两个值之间分配一个随机数。我有40个随机生成的数字,介于1和12之间,然后我想给这40个数字中的每一个分配一个介于两个值之间的随机数,但这两个值取决于数字是否为1,2,3,…,12。我的代码现在看起来像这样,但出来的数字并不总是在我给出的限制之间。怎么了

Sub measurepoints()


Dim i As Integer
Dim j As Integer


For i = 2 To 41
     Cells(i, 1).Value = "=RANDBETWEEN(1,12)"
Next i

For j = 2 To 41

If Cells(j, 1).Value = 1 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,2)"

ElseIf Cells(j, 1).Value = 2 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,2)"

ElseIf Cells(j, 1).Value = 3 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"

ElseIf Cells(j, 1).Value = 4 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"

ElseIf Cells(j, 1).Value = 5 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"

ElseIf Cells(j, 1).Value = 6 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"

ElseIf Cells(j, 1).Value = 7 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,4)"

ElseIf Cells(j, 1).Value = 8 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,2)"

ElseIf Cells(j, 1).Value = 8 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"

ElseIf Cells(j, 1).Value = 10 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,10)"

ElseIf Cells(j, 1).Value = 11 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,4)"

ElseIf Cells(j, 1).Value = 12 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"



  End If


Next j

End Sub
您有一个输入错误:

ElseIf Cells(j, 1).Value = 8 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,2)"

ElseIf Cells(j, 1).Value = 8 Then
    Cells(j, 2).Value = "=RANDBETWEEN(1,8)"
不需要VBA:

=RANDBETWEEN(1,INDEX({2,2,8,8,8,8,4,2,8,10,4,8},A1))
你应该做你想做的事


要重新计算工作表中的所有函数,请按
F9

能否给出一个数值超出范围的单元格示例?也许您只需要执行
…Formula=“Randbetween(#,#)”
,而不是
值?至少通过这种方式,您可以看到Excel在赋值之前是否以某种方式更改了您的公式。无需VBA,
=RandBevering(1,索引({2,2,8,8,8,8,4,4,2,8,10,4,8},A1))
只要您觉得有必要使用
ElseIf
针对不同的值成功地测试某些内容,就应该做您想做的事情,考虑使用<代码>选择案例< /代码>块。下面识别的打字错误可能会跳到您身上(
Case 8
出现两次),并检查“不可触及条款”,该条款“从未匹配或等同于先前的案例陈述”。@controlnetic.nomad谢谢。是否还有一个选项,我可以每次刷新A列中的值,以便获得一组新的随机数?@controlnetic.nomad谢谢,是否还可以每次删除重复的值?因此,有时我会根据我有多少个副本而得到更多的组合。谢谢,后来注意到了。仍然存在分配超出范围的值的相同问题。但“控制论游牧者”的答案是正确的!