如何在Excel VBA中生成一个随机数字
我想写一个函数生成一些代表的数字
2 =白色,3 =红色,4 =绿色,5 =蓝色,6 =黄色
我知道,如果它是相等的概率,那么我可以写
GenerateColor = Int(Rnd()* 5)+ 2
但是,我想生成白色的一半时间,并与剩下的四种颜色共享另一半,我该怎么办? (这意味着50%的概率是白色的,50%的概率是剩余的4种颜色)。
你也可以不用VBA来做到这一点:
=IF(RAND()<0.5,2,FLOOR(RAND()*4,1)+3)
这给了50%的机会返回2,另外50%是平均分配在3和6之间。
试试这个:
Sub RanGen() With Application.WorksheetFunction x = .RandBetween(1, 2) If x = 2 Then MsgBox x Else x = .RandBetween(3, 6) MsgBox x End If End With End Sub
在工作表公式中,
=choose(randbetween(1, 2), "white", choose(randbetween(1, 4), "red", "green", "blue", "yellow"))
您可以使用本机VBA函数在VBA中编写代码,或者在几个地方添加worksheetfunction
函数。
您也可以使用像这样的累积值的助手列:
您用于结果的公式是:
=INDEX($B$2:$B$6,COUNTIF($D$2:$D$6,"<="&RAND())+1)
column D
的公式只是一个简单的SUM
函数:
=SUM($C$2:C2)
这也应该给你你正在寻找的结果,并将在未来更容易改变。