Excel随机生成指定范围的时间

2025-11-08 02:27:53

1、VBA程序思路解读:

(1)在时间显示里边,时、分、秒都含有冒号“:”间隔,如果随机生成时、分、秒之后再进行比对计算,显得比较复杂。

(2)在时间里面,如果达不到24小时,其时间转换成的数值将会小于1,例如:在F2单元格里面输入公式=VALUE(E2),E2单元格里面的时间将会转换成数值,因此,在VBA程序里边也可以采用这种方式把时间转换成数值计算。

Excel随机生成指定范围的时间

2、按下键盘上面的【Alt+F11】组合键调出VBA编辑器,或者点击【开发工具】、【Visual Basic】调出VBA编辑器。

Excel随机生成指定范围的时间

3、在VBA编辑器上面插入代码模块,即:点击【插入】、【模块】。

Excel随机生成指定范围的时间

4、在VBA模块的代码框里边输入以下程序代码,然后按下【F5】键运行程序。

Sub RndTime()

Dim i1, i2, i3, i4, i5, i6, i7, i8

On Error Resume Next                 '忽略运行过程中可能出现的错误

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")  '定义工作表Sheet1

i1 = CDate("13:30:00")  '把时间转换成数值

i2 = CDate("17:30:00")

i3 = CDate("13:30:30") - CDate("13:30:00")   '相差30s的数值

i4 = 0     '中间变量,用于记录循环的次数

i6 = i1    '先把起始时间赋给i6

i8 = 1     '第几行

Do

 i4 = i4 + 1    '循环次数累计

 i5 = Rnd()     '生成的随机数

 i7 = i5 - i6   '生成的随机数与上一次值的差

 If i5 >= i1 And i5 <= i2 And i7 <= i3 And i7 > 0 Then  '如果在指定的时间范围里面,则

  i6 = i5                     '把满足条件的i5的值赋给i6

  i8 = i8 + 1                 '从第二行开始

  mysheet1.Cells(i8, 5) = i5  '把i5的值写到第5列对应的单元格里面

 End If

 If i4 > 5000000 Or i8 > 200 Then  '如果循环次数超过500万次或生成的随机时间达到200个,则

  Exit Do  '退出Do循环

 End If

Loop

mysheet1.Columns("E:E").NumberFormatLocal = "h:mm:ss;@"  '把E列设置成时间格式

End Sub

Excel随机生成指定范围的时间

5、VBA程序函数解释说明:

(1)CDate是把时间格式的字符转换成可以运算的数值,便于后续计算。

(2)Rnd随机函数的取值范围是大于等于0且小于1。

(3)使用Do……Loop循环时,应当避免死循环的出现,可以在循环里边累计它的循环次数,达到指定的次数时强制退出Do循环。

(4)随机生成的数值都是小数,所以,记得在程序里面把单元格设置成时间的格式,这样才能正确显示所需的随机时间。

6、回到Excel表格界面,将会看到随机生成的时间。

Excel随机生成指定范围的时间

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢