Excel VBA 中两个日期时间之间的随机日期时间

Random date-time between two date-times in Excel VBA

如何获得 Excel VBA 中两个日期时间之间的随机日期时间?

我试过了

worksheetFunction.Randbetween(time1, time2)

但这只提供没有小时、分钟和秒的日期(尽管 time1time2 包括小时、分钟和秒)

我还尝试了以下将 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' 是上限,或者如果 time1time2 都是日期时间,而不是日期[=16],请删除 +1 =]

在使用这两个版本之前,您还应该使用 Randomize 语句。