Excel VBA 中两个日期时间之间的随机日期时间
Random date-time between two date-times in Excel VBA
如何获得 Excel VBA 中两个日期时间之间的随机日期时间?
我试过了
worksheetFunction.Randbetween(time1, time2)
但这只提供没有小时、分钟和秒的日期(尽管 time1
和 time2
包括小时、分钟和秒)
我还尝试了以下将 tmp 声明为字符串的代码。
tmp = DateDiff("s", time1, time2) [to get the seconds]
tmp = Int((tmp +1) * Rnd) [to get a random number inbetween the DateDiff]
tmp = tmp + CDbl(time1)
但这也行不通...
下面的代码应该可以解决问题:
worksheetFunction.Randbetween(time1, time2) + Rnd()
Rnd()会生成一个0到1之间的值,时间存储为一天的小数
你也可以避开第一部分而使用
time1+Rnd()*(time2-time1+1)
如果您希望 time2 '00:00:00' 是上限,或者如果 time1
和 time2
都是日期时间,而不是日期[=16],请删除 +1
=]
在使用这两个版本之前,您还应该使用 Randomize
语句。
如何获得 Excel VBA 中两个日期时间之间的随机日期时间?
我试过了
worksheetFunction.Randbetween(time1, time2)
但这只提供没有小时、分钟和秒的日期(尽管 time1
和 time2
包括小时、分钟和秒)
我还尝试了以下将 tmp 声明为字符串的代码。
tmp = DateDiff("s", time1, time2) [to get the seconds]
tmp = Int((tmp +1) * Rnd) [to get a random number inbetween the DateDiff]
tmp = tmp + CDbl(time1)
但这也行不通...
下面的代码应该可以解决问题:
worksheetFunction.Randbetween(time1, time2) + Rnd()
Rnd()会生成一个0到1之间的值,时间存储为一天的小数
你也可以避开第一部分而使用
time1+Rnd()*(time2-time1+1)
如果您希望 time2 '00:00:00' 是上限,或者如果 time1
和 time2
都是日期时间,而不是日期[=16],请删除 +1
=]
在使用这两个版本之前,您还应该使用 Randomize
语句。