如何在Excel中生成随机工作日或周末日期?


本教程旨在帮助学习者了解在Excel中生成随机工作日或周末日期的技术。在本教程中,用户将了解执行此任务的三种可能方法。第一种方法是基于使用预定义公式生成随机日期。第二种方法允许用户使用Kutools生成随机日期,最后一种方法允许用户使用VBA代码随机生成日期。相同的方法可用于生成工作日和周末日期。

示例1:在Excel中生成随机工作日日期的示例。

步骤1

要了解引导步骤,首先创建一个包含以下表格数据的Excel工作表

步骤2

然后转到A2单元格。在单元格中输入提供的公式:“=DATE(2023, 4, 1)+LARGE(IF(WEEKDAY(DATE(2023, 4, 1)+ROW($1:$365)-1, 2)<6, ROW($1:$365)-1, ""), RANDBETWEEN(1, SUM(--(WEEKDAY(DATE(2023, 1, 1)+ROW($1:$365)-1, 2)<6))))”。

说明

DATE()是Excel中一个预定义的方法,用于在无需定义方法的情况下生成日期。只需调用该方法并传递所需的参数即可生成日期。

WEEKDAY() - 此方法将生成一个位于工作日内的日期。

2023是当前取的年份。

SUM(): 用于计算总和的方法。

请考虑以下给定的公式快照

步骤3

按“Enter”键。这将显示一个随机的工作日,如下所示

示例2:使用Kutools在Excel中生成随机周末日期的示例。

步骤1

请考虑以下给定的示例工作表,其中A2为活动单元格。

步骤2

然后转到“Kutools”选项卡并选择“编辑”选项。然后选择“插入”选项。从新出现的下拉菜单中,只需选择“插入随机数据”。

步骤3

这将打开以下给出的“插入随机数据”对话框。

步骤4

选择“日期”选项卡并在“从”和“到”输入下拉菜单中设置日期。如果用户想要生成工作日,请选择“工作日”。在本例中,让我们生成一个“周末”日期。最后,单击“确定”。

步骤5

这将在控制台上显示一个随机日期。

示例3:使用VBA代码在Excel中生成随机工作日日期的示例。

步骤1

请考虑以下给定的示例工作表。

步骤2

然后转到“开发工具”选项卡,在“代码”部分下选择“Visual Basic”代码。

步骤3

这将打开以下给定的代码区域

步骤4

然后转到“插入”选项卡并单击“模块”。

步骤5

这将打开一个编写模块代码的区域。

步骤6

在上面的代码区域中,键入以下给定的代码

'declaring boolean variable
Dim rnd_y As Boolean
' define function with name rnd_date
Function rnd_date(pYear As Long)
    'declaring required variables
    Dim i As Long
    ' variable to store day of year
    Dim day_in_year As Long
    Dim x_ind As Long
    Dim rnd_ind As Long
    Dim Temp As Date
    ' variable to store week days
    Dim Week_days() As Variant
    ' if expression to check if
    ' value of rnd_y is 0
    If Not rnd_y Then
        'then update true
        rnd_y = True
        'generate random values
        Randomize
    ' end of if block
    End If
    ' calculating days in year by using below given fomrula
    day_in_year = DateSerial(pYear + 1, 1, 1) - DateSerial(pYear, 1, 1)
    ReDim Week_days(1 To day_in_year)
    ' for loop to iterate the data values
    For i = 1 To day_in_year
        '   if weekday is less than 6
        If Weekday(DateSerial(pYear, 1, i), vbMonday) < 6 Then
            ' then below given instructions will be executed
            x_ind = x_ind + 1
            Week_days(x_ind) = DateSerial(pYear, 1, i)
        ' end of if block
        End If
    ' next block
    Next
    ReDim Preserve Week_days(1 To x_ind)
    ' for loop to chekc the loop values
    For i = x_ind To 1 Step -1
        ' casting obtained data to int
        rnd_ind = Int(i * Rnd + 1)
        ' calling week_days method again
        Temp = Week_days(rnd_ind)
        Week_days(rnd_ind) = Week_days(i)
        'store temp data to weekdays(i) location
        Week_days(i) = Temp
    ' next instruction
    Next
    'storing results
    rnd_date = Application.WorksheetFunction.Transpose(Week_days)
' end of function module
End Function

请使用正确的代码缩进,否则代码将在工作表上显示错误。

代码快照

步骤7

按“Ctrl+S”保存代码,然后打开工作表,调用方法“rnd_date(2023)”并将年份作为参数值传递。

步骤8

这将显示提供的年份的随机日期。如下所示

结论

本教程允许用户了解使用三种不同方法生成随机工作日和周末日期的方式。完成本教程后,用户将能够轻松生成日期。

更新于: 2023年4月17日

765 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告