在单元格中输入随机日期 - Excel VBA

时间:2013-10-01 14:04:46

标签: excel vba date excel-vba random

对此做了一些研究,我发现有一些方法可以使用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//

4 个答案:

答案 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