今天跟大家分享一下Excel如何利用vba如何生成不重复随机数
工具/原料
Excel
方法/步骤
1、如下图A列是某班级19位同学的姓名,现在我们想要用vba为这19名同学随机安排座位号。
2、选中B2:B20单元格区域,然后同时按下Alt+F11
3、点击sheet1,然后在右边空白区录入vba代码,接着按下F5运行代码
4、录入1作为最小随机数,然后点击【确定】
5、接着在最大随机数字选项内录入19,点击【确定】
6、接着点击【确定】即可完成
7、完成效果如下图,最后跟大家抵足谛垴分享一下本文这里所使用的vba代码。如果需要Excelvba代做请百度方方格子Sub生成不重复的随机数()晦倘佳鳎OnErrorResumeNextDimcountAsLong,needCountAsLongDimrnAsRangeDimmax,min,unitAsDoubleDimbRepeatAsBooleanDimdAsObjectDimi,vcount=Selection.Cells.countIfcount>10000ThenMsgBox"请不要选择超过10000个单元格!"ExitSubEndIfmin=Application.InputBox(prompt:="随机最小数字",Type:=1,Default:="0")IfNotIsNumeric(min)ThenExitSub'false不够准确,0也是falsemax=Application.InputBox(prompt:="随机最大数字",Type:=1,Default:="100")IfNotIsNumeric(max)ThenExitSubunit=Application.InputBox(prompt:="随机数的精确单位,如精确到精确到0.2等等",Type:=1,Default:="1")IfNotIsNumeric(unit)ThenExitSub'Ifunit=FalseThenExitSub'---------------------------------------needCount=Int((max-min+unit)/unit)Ifcount>needCountThencount=needCount'合理个数'MsgBox"您选择的区域太大,无法生成不重复的随机数!至多只能选中"&needCount&"个单元格!"'ExitSubEndIfSetd=CreateObject("scripting.dictionary")RandomizeTimerFori=1TocountDov=Int(Rnd()*Int((max-min+unit)/unit))*unit+minLoopWhiled.exists(v)Selection.Cells(i)=vd.Addv,""NextiEndSub