如何在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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.