Как создать случайное число в Excel VBA
Я хотел написать функцию, генерирующую некоторые числа, которые представляют
2 = Белый, 3 = Красный, 4 = Зеленый, 5 = синий, 6 = желтый
Я знаю, что если это равная вероятность, то я могу написать
GenerateColor = Int (Rnd () * 5) + 2
однако я хочу генерировать белую половину времени и делиться другой половиной с оставшимися 4 цветами, как я могу это сделать? (Это означает 50% вероятность белый, 50% вероятности остается 4 цвета.)
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:$B,COUNTIF($D:$D,"<="&RAND())+1)
формула column D
просто SUM
функция:
=SUM($C:C2)
это должно дать вам результат, который вы ищете, и будет проще в будущем.