对此做了一些研究,我发现有一些方法可以使用excel电子表格中的函数生成范围内的随机日期,如下所示:
=DATE(2010, 1, 1)+LARGE(IF(WEEKDAY(DATE(2010, 1, 1)+ROW($1:$365)-1, 2)<6, ROW($1:$365)-1, ""), RANDBETWEEN(1, SUM(--(WEEKDAY(DATE(2010, 1, 1)+ROW($1:$365)-1, 2)<6))))
有没有办法可以做到这一点并将其直接插入像
这样的单元格中Cells(i, "F").Value = //Random Date//
答案 0 :(得分:2)
VBA方式:
Sub RandomDates()
Dim startDate As Date, endDate As Date, randomDate As Date
startDate = "1/1/1990"
endDate = "1/1/2012"
Cells(i, "f") = WorksheetFunction.RandBetween(startDate, endDate)
Cells(i, "f").NumberFormat = "d/m/yyyy"
End Sub
答案 1 :(得分:0)
使用 pnuts 方法:
Sub dural()
i = 1
d1 = DateValue("1/1/1990")
d2 = DateValue("1/1/2012")
Cells(i, "F").Value = Application.WorksheetFunction.RandBetween(d1, d2)
Cells(i, "F").NumberFormat = "m/d/yyyy"
End Sub
答案 2 :(得分:0)
将您的功能转换为VBA:
=DateSerial(2001,1,1) + Int(Rnd*365)
如果你需要检查工作日,那么vba也有一个WeekDay功能。
答案 3 :(得分:0)
您可以使用RANDBETWEEN()生成特定时间段的随机日期。您将包含DATE()函数,使用表单
将底部和顶部值指定为日期RANDBETWEEN(DATE(bottomdate),DATE(topdate))
OR
RANDBETWEEN(DATE(bottomdate);DATE(topdate))
在,
函数中使用;
或RANDBETWEEN()
进行测试。
例如,要返回2014年1月1日到2014年1月30日之间的随机日期,您需要使用以下功能:
=RANDBETWEEN(DATE(2014,1,1),DATE(2014,1,30))
参考:here