Excel 如果单元格A1是某个值,则B1在两个值之间是随机的
如果单元格是某个值,我想使用VBA在两个值之间分配一个随机数。我有40个随机生成的数字,介于1和12之间,然后我想给这40个数字中的每一个分配一个介于两个值之间的随机数,但这两个值取决于数字是否为1,2,3,…,12。我的代码现在看起来像这样,但出来的数字并不总是在我给出的限制之间。怎么了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
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谢谢,是否还可以每次删除重复的值?因此,有时我会根据我有多少个副本而得到更多的组合。谢谢,后来注意到了。仍然存在分配超出范围的值的相同问题。但“控制论游牧者”的答案是正确的!