Excel VBA:如何在单元格中随机写入BM、JC、KS三个值之一?
实现VBA随机写入三个值的方法
你之前尝试的代码报错,是因为IIf函数只能接受3个参数(条件表达式、条件为真的返回值、条件为假的返回值),没法直接添加第四个参数。下面给你两种可行的实现方式:
方法一:嵌套IIf函数
先把随机数存到变量里(避免多次调用Rnd()生成不同值导致逻辑混乱),再通过嵌套IIf把概率分成三等分:
Dim r As Double r = Rnd() '生成0到1之间的随机数(不包含1) Worksheets("Sheet1").Range("A1").Value = IIf(r > 2/3, "BM", IIf(r > 1/3, "JC", "KS"))
如果需要调整某个值的出现概率,修改对应的阈值即可(比如想让"BM"概率更高,把2/3改成0.8)。
方法二:使用数组随机取值
这种方法更灵活,后续要新增选项时,只需要修改数组内容就行:
Randomize '初始化随机数生成器,避免每次运行得到相同的随机序列 Dim valArr As Variant valArr = Array("BM", "JC", "KS") '把需要的值放进数组 '通过随机索引获取数组中的值,Int(Rnd() * 3)会生成0、1、2三个整数,对应数组的三个元素 Worksheets("Sheet1").Range("A1").Value = valArr(Int(Rnd() * UBound(valArr) + 1))
也可以用更简洁的写法:
Randomize Worksheets("Sheet1").Range("A1").Value = Array("BM", "JC", "KS")(Int(Rnd() * 3))
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

