vba提取排名前三的单元格(VBA例3生成指定次数的指定随机数)

vba提取排名前三的单元格(VBA例3生成指定次数的指定随机数)(1)

如题,在31个单元格中,随机生成指定次数的1

思路:

传统思路是将生成0-31之间的随机数,然后将生成随机数对应的单元格值修改为1。但归根到此问题上,该问题是一个考勤表随机生成,所以大部分的随机数应该是1,换句话话说1的总次数在0和31之间,大都接近31,毕竟正常人都需要经常上班哈。因此,带来一个执行效率的问题,即如果考勤天数是25天以上,则在每次生成随机数0-25的概率要大于25-31的概率,所以,此题需要反思路解决,即首先将31个单元格全部填1,然后执行(31-考勤天数)次随机数循环代码,并将对其对应的单元格清空,最后达到传统思路同样的效果,且代码执行效率较高。

细节:

没有细节,撸就完了!

代码:

Sub t1() Dim i, n, x i = [a66356].End(xlUp).Row Range("b4:af" & i) = 1 For x = 4 To i Do While Application.CountA(Range(Cells(x, 2), Cells(x, 32))) <> Cells(x, 1).Value n = Int(31 * Rnd 2) Cells(x, n).ClearContents Loop Next End Sub

vba提取排名前三的单元格(VBA例3生成指定次数的指定随机数)(2)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页