Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

如何在 Excel 中創建工作日/商業日的列表?

Author Sun Last modified

本教程將介紹如何在 Excel 中快速創建指定日期範圍內的工作日或商業日列表。能夠生成這樣的列表對於專案排程、工時表、考勤記錄或僅在工作日進行的任務規劃特別有用。以下方法展示了手動和自動兩種方式,以滿足不同場景和 Excel 熟練程度的需求。

使用自動填充選項列出工作日

使用便捷工具 -- Kutools for Excel 列出工作日

使用 Excel WORKDAY/WORKDAY.INTL 公式列出商業日

使用 VBA 代碼自動列出工作日/商業日


arrow blue right bubble 使用自動填充選項列出工作日

在 Excel 中,您可以使用自動填充控制柄結合「填充工作日」選項快速創建工作日列表。此方法簡單直接,非常適合快速創建連續的工作日列表,但如果您需要精確控制開始和結束日期,或者需要考慮假日,則靈活性較低。

1. 在空單元格中輸入起始日期。例如,在單元格 A1 中輸入 7/1/2015。請參閱截圖:

A screenshot showing the start date entered in Excel to create a list of weekdays

2. 將鼠標移動到單元格右下角,直到看到填充控制柄(+)。然後,點擊並向下拖動填充控制柄至所需的行數。例如,拖動它列出 22 個工作日。

提示:您需要估算或計算要填寫的工作日數量。如果不确定,可以填寫比所需更多的單元格,之後再輕鬆刪除多餘的部分。

A screenshot of dragging the fill handle in Excel to list dates

3. 完成拖動後,點擊選擇區域附近出現的小自動填充選項按鈕。在彈出菜單中,選擇填充工作日。Excel 將只填充工作日(星期一至星期五),跳過周末。

A screenshot of the Auto Fill Options menu in Excel with the Fill Weekdays option

現在,您應該能在工作表中看到從 7/1/2015 開始的 22 個工作日序列。

A screenshot of a list of weekdays only generated

此方法提供了一種快速填充連續工作日列表的方式,但不適用於自定義商業規則(例如排除特定假期或非連續工作日間隔)。此外,它無法直接填充兩個確切日期之間的工作日。對於更複雜的需求,請考慮使用下面的自動化方法之一。


arrow blue right bubble 使用便捷工具 -- Kutools for Excel 列出工作日

Kutools for Excel 提供了一個便捷解決方案,利用其「插入隨機資料」功能生成指定日期範圍內的所有工作日或商業日。這種方法靈活且省時,特別是在處理大數據集或希望確保所有返回的日期都是唯一且根據工作日狀態過濾時。非常適合管理依賴精確商業日計算的日程安排或計劃項目的用戶。

Kutools for Excel 提供超過 300 種進階功能,簡化複雜任務,提升創造力與效率。 結合 AI 能力,Kutools 能夠精準自動化任務,讓數據管理變得輕而易舉。Kutools for Excel 的詳細資訊...免費試用...

1. 選擇一個空白的單元格範圍來生成列表。確保選擇的單元格數量超過預期的工作日數量,因為單元格數量決定了能容納多少日期。請參閱截圖:

A screenshot of selected cells for creating a weekday list with Kutools

2. 轉到 Excel 功能區上的 Kutools 標籤,然後點擊 插入 > 插入隨機資料。請參閱截圖:

3. 在 插入隨機資料 對話框中,切換到 日期 標籤。輸入所需的日期範圍:在 框中輸入最早日期,在 框中輸入最晚日期。勾選 工作日 以限制結果為工作日(星期一至星期五),以及 唯一值 以避免任何重複日期。請參閱截圖:
A screenshot of the Insert Random Data dialog with Workday option selected

注意:如果您的項目需要包括假期,您需要在生成列表後手動刪除它們,因為內置函數僅跳過典型的周末。

4. 點擊 確定應用。該工具將在您選擇的範圍內填充符合條件的所有工作日。如果選擇的範圍大於可能的結果日期,可能會有空白單元格。

A screenshot showing a list of weekdays inserted with blank cells remaining

5. (可選)為使生成的日期按時間順序排列,選擇填入日期的範圍,轉到 數據 標籤,然後點擊 從最早到最新排序。這一步確保您的列表組織有序。

A screenshot showing Data tab and Sort Oldest to Newest option in Excel

生成的列表現在將顯示自定義範圍內的所有商業日,按從最早到最晚的順序排列。

A screenshot showing weekdays sorted from oldest to newest in Excel

Kutools for Excel 的 插入隨機資料 工具不僅支持工作日:您還可以生成隨機數字、隨機時間、隨機唯一值、隨機字符串和隨機自定義列表。點擊這裡了解更多有關此工具的信息。

注意:始終再次檢查生成的日期是否符合您的標準,尤其是當您需要排除特定假期或日期範圍涵蓋變動的工作周時。

Kutools for Excel - 包含超過 300 種 Excel 必備工具。永久免費享受 AI 功能!立即下載!

arrow blue right bubble 使用 Excel WORKDAY/WORKDAY.INTL 公式列出商業日

Excel 的 WORKDAYWORKDAY.INTL 函數允許您通過編程方式生成兩個日期之間的商業日列表。WORKDAY 默認跳過周末(星期六和星期日),而 WORKDAY.INTL 讓您指定自定義周末天數並包含假期日期。如果您希望自動化流程並確保精確度,例如人力資源排程或薪資計算,這種方法非常適應。

為了方便,以下是使用公式構建動態商業日列表的逐步方法:

1. 在單元格 A1 中輸入起始日期,例如:7/1/2015。在單元格 B1 中輸入結束日期,例如 7/31/2015

2. 在單元格 C1 中輸入此公式以按順序獲取商業日列表:

=IF(WORKDAY($A$1,ROW(A1)-1,$B$2)<=$B$1,WORKDAY($A$1,ROW(A1)-1,$B$2),"")

參數解釋:

  • $A$1: 起始日期(絕對引用)
  • ROW(A1)-1: 每行遞增工作日號碼
  • $B$2: 可選,包含要排除的假期日期範圍(在 B2:B10 或任何其他期望的範圍中輸入假期日期,或如果不需則留空)
  • $B$1: 列表的結束日期(確保系列在選定的端點停止)

3. 向下拖動單元格 C1 中的公式,直到單元格顯示為空。列表將動態填充所有商業日(排除周末或列出的任何假期)。

提示:

  • 如果您需要自定義周末(例如,只有星期日是周末),請考慮使用 WORKDAY.INTL 函數,它允許通過提供周末參數指定哪幾天是周末(詳情請參閱 Excel 文檔)。
  • 請務必將假期日期維護在清晰分開的範圍內,以避免意外包含在商業日序列中。
  • 如果假期不是問題,可以在公式中省略可選的假期範圍。

常見錯誤:如果在期望日期的地方得到 #NUM! 或空白結果,請檢查您的起始和結束日期是否有效,並且如果使用了假期列表,其中是否僅包含日期(而不是文本或其他數據)。

arrow blue right bubble 使用 VBA 代碼自動列出工作日/商業日

如果您需要生成任何範圍內的完整工作日或商業日列表,自定義 VBA 宏可以自動化這個過程。這種方法非常適合高級 Excel 用戶,或者當您頻繁在不同數據集上重複此任務時。使用 VBA,您可以考慮自定義工作周模式、假期,甚至可以把結果放在工作表中的任意位置。

1. 點擊 開發工具 > Visual Basic 打開 Microsoft Visual Basic for Applications 窗口。然後,點擊 插入 > 模塊,並將以下代碼粘貼到模塊中:

Sub ListBusinessDays()
    Dim StartDate As Date
    Dim EndDate As Date
    Dim r As Integer
    Dim ws As Worksheet
    Dim currDate As Date
    Dim Holidays As Range
    
    On Error Resume Next
    Set ws = ActiveSheet
    StartDate = Application.InputBox("Enter start date:", "KutoolsforExcel", Type:=2)
    EndDate = Application.InputBox("Enter end date:", "KutoolsforExcel", Type:=2)
    Set Holidays = Application.InputBox("Select range for holidays (optional, press Cancel if none):", "KutoolsforExcel", Type:=8)
    On Error GoTo 0
    
    r = 1
    For currDate = StartDate To EndDate
        If Weekday(currDate, vbMonday) <= 5 Then ' Monday = 1, Friday = 5
            If Holidays Is Nothing Then
                ws.Cells(r, 3).Value = currDate
                r = r + 1
            Else
                If Application.CountIf(Holidays, currDate) = 0 Then
                    ws.Cells(r, 3).Value = currDate
                    r = r + 1
                End If
            End If
        End If
    Next
End Sub

2。點擊 Run button 按鈕或按下 F5 運行代碼。系統會提示您輸入列表的起始和結束日期。可選地,您可以選擇一個假期日期範圍以排除(或者如果不需要,只需按取消)。宏將在活動工作表的列 C 中填充每個商業日,跳過周末(星期一至星期五)和您指定的假期。

注意與故障排除:

  • 如果日期沒有顯示,請檢查您的輸入日期是否有效且為日期格式。
  • 如果未指定假期範圍,則列出起始和結束日期之間的所有工作日。
  • 結果始終從列 C 開始。如果想在其他地方輸出,請調整代碼中的 ws.Cells(r,3)

最佳 Office 生產力工具

🤖 Kutools AI 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
15 大工具集12 項文本工具添加文本刪除特定字符…)50+ 儀表 類型甘特圖等)40+ 實用 公式基於生日計算年齡等)19 項插入工具插入QR码根據路徑插入圖片等)12 項轉換工具金額轉大寫匯率轉換等)7 項合併與分割工具高級合併行分割儲存格等)...及更多
使用 Kutools,語言任你選 — 支援英語、西班牙語、德語、法語、中文及超過40 種語言!

運用 Kutools for Excel,全面提升您的 Excel 技能,體驗前所未有的高效。 Kutools for Excel 提供超過300 項進階功能,讓您提升工作效率、節省時間。 點此尋找您最需要的功能...


Office Tab 為 Office 帶來分頁介面,讓您的工作更加輕鬆簡單

  • 在 Word、Excel、PowerPoint 中啟用分頁編輯與閱讀
  • 在同一視窗的新分頁中打開與創建多份文件,而非開啟新視窗。
  • 提升您的生產力50%,每日可幫您減少數百次鼠標點擊!

所有 Kutools 外掛,一次安裝

Kutools for Office 套裝整合了 Excel、Word、Outlook 和 PowerPoint 的外掛,外加 Office Tab Pro,非常適合需要跨 Office 應用程式協同作業的團隊。

Excel Word Outlook Tabs PowerPoint
  • 全合一套裝 — Excel、Word、Outlook及 PowerPoint 外掛 + Office Tab Pro
  • 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
  • 協同運作更順暢 — Office 應用間無縫提升生產力
  • 30 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用