如何在 Excel 中計算兩個日期之間的百分比?
在 Excel 中管理進行中的專案或監控排程任務進度時,通常需要根據今日日期計算任務期間已過的比例。透過將已過時間表示為總規劃期間的百分比,即可輕鬆評估專案是超前、如期,還是落後於預定進度。例如,您的工作表可能包含多項任務,每項皆有各自的開始與結束日期;您會想知道截至今天,每項任務的排程期間已完成多少百分比。本教學將逐步說明如何在 Excel 中實現此目標、自動更新進度百分比,並示範如何運用條件格式,根據這些結果直覺化地突顯任務狀態。
下圖顯示一份範例任務清單,包含開始日期、結束日期以及期望計算出的完成百分比:

使用公式計算兩日期之間的完成百分比
若要計算兩日期之間任務的完成百分比,可使用以 Excel 的 DATEDIF 與 TODAY 函數為基礎的公式。當您資料量較小且資料集不常變動時,此方法相當適用。
1. 在您希望顯示結果的欄位中輸入下列公式(例如,在儲存格 )D2):
=(DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1) 參數說明:
B2 為任務開始日期所在的儲存格,C2 為結束日期所在的儲存格。TODAY()會自動傳回今日日期,因此公式將計算自任務開始以來已過的天數,並除以任務的完整排程天數。
2. 輸入公式後,向下拖曳填滿控制點,即可將公式複製至所有必要列,每列會立即根據今日日期顯示對應任務的當前完成百分比。下方範例展示此方法套用於多項任務的效果:

3. 選取所有已計算的儲存格,前往開始索引標籤,然後按一下百分比樣式按鈕(位於)數字群組中),即可將數值以百分比形式顯示,取代小數格式。您還可進一步使用增加小數位數與減少小數位數按鈕,輕鬆調整至所需精確度!

注意事項:此方法彈性極高,但您必須確保所有日期儲存格皆設定為 Excel 中的實際日期格式,否則可能產生錯誤或不正確的數值。
若您希望結果每日自動更新,TODAY()可確保每次重新計算活頁簿或開啟檔案時,百分比皆即時反映當前進度。但請注意,若參照的是手動輸入的靜態日期(而非 )TODAY()),則需隨著時間推移自行更新這些數值。
VBA 程式碼 – 自動化百分比計算,實現跨列與日期的動態更新
若您的工作表包含多項明確標註開始與結束日期的任務,可運用 VBA 根據今日日期自動計算每項任務的進度百分比。當您希望跨列動態更新任務進度,無需手動填入公式時,此方法尤其實用。巨集將逐列處理,比對今日日期與各任務的起訖日期,計算已過時間占總工期的百分比,並將結果自動填入指定欄位,即時清晰呈現每項任務的完成狀況。
1. 按下 Alt + F11,開啟 Microsoft Visual Basic for Applications 編輯器。在 VBA 編輯器中,依序點選插入 > 模組,建立新模組後,將下列程式碼貼入其中:
Sub UpdateTaskCompletionPercent()
'Updated by Extendoffice 20250724
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim StartDateCol As String, EndDateCol As String, PercentCol As String
Dim startDate As Variant, endDate As Variant, todayDate As Date
Dim pct As Double
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set ws = Application.ActiveSheet
' Adjust these column letters as needed
StartDateCol = "B"
EndDateCol = "C"
PercentCol = "D"
todayDate = Date
lastRow = ws.Cells(ws.Rows.Count, StartDateCol).End(xlUp).Row
For i = 2 To lastRow ' Skip header
startDate = ws.Cells(i, StartDateCol).Value
endDate = ws.Cells(i, EndDateCol).Value
If IsDate(startDate) And IsDate(endDate) Then
If endDate >= startDate Then
If todayDate < startDate Then
pct = 0
ElseIf todayDate >= endDate Then
pct = 1
Else
pct = (todayDate - startDate + 1) / (endDate - startDate + 1)
End If
ws.Cells(i, PercentCol).Value = pct
ws.Cells(i, PercentCol).NumberFormat = "0.00%"
Else
ws.Cells(i, PercentCol).Value = "Invalid dates"
End If
Else
ws.Cells(i, PercentCol).Value = "Date error"
End If
Next i
End Sub 2. 輸入程式碼後,按下 F5(或按一下)
執行按鈕)即可立即執行指令碼,並根據當前日期自動填入各列的百分比欄位(D)。
注意事項與疑難排解:
- 若您的任務資料分散於不同欄位,請調整程式碼中的
StartDateCol、EndDateCol與PercentCol,使其符合您工作表的實際配置。 - 若指令碼顯示 "Date error"或 "Invalid dates",請檢查是否存在空白列、日期輸入錯誤,或開始日期與結束日期重疊、順序不正確等情形。
- 此方法能確保您的百分比計算結果始終精準,並在大量編輯資料或從其他來源匯入資料後即時更新。
此 VBA 解決方案專為重複性資料準備與自動化報表製作而設計,有效避免手動複製公式所導致的低效率。
更多相關百分比文章:
- 根據百分比折扣計算原始價格
- 日常生活中,購物中心經常推出商品折扣。若您已知折扣後的價格與折扣百分比(如下圖所示),該如何在 Excel 中計算出該商品的原始價格呢?
- 計算一年或一個月已過或剩餘的百分比
- 假設您的工作表中有一份日期清單,現在您希望根據指定日期,計算該年或該月已過或剩餘的百分比,該如何在 Excel 中完成這項操作?
- 從清單中計算「是」與「否」的百分比
- 如何在 Excel 工作表中,針對特定儲存格範圍內的「是」與「否」文字計算其百分比?本文或許能協助您輕鬆完成這項任務。
- 建立同時顯示百分比與數值的圖表
- 我們輕鬆就能在長條圖或柱狀圖中加入百分比或數值,但您是否曾試過在 Excel 中建立同時顯示百分比與數值的直欄圖或條形圖?
- 使用 COUNTIF 函數在 Excel 中計算百分比
- 例如,我有一份研究報告摘要,其中包含三個選項 A、B 和 C,現在希望計算這三個選項各自所佔的百分比——也就是選項 A 在所有選項中所占的比例。本文將說明如何在指定範圍內計算特定選項的百分比。
- 超強編輯欄(輕鬆編輯多行文字與公式);閱讀版面(輕鬆閱讀與編輯大量儲存格);貼上至篩選範圍……
- 合併儲存格/列/欄並保留資料;分割儲存格內容;合併重複行並加總/平均……防止重複項儲存格;比較範圍……
- 選取重複或唯一列;選取空白列(所有儲存格皆為空);超級查找與模糊搜尋多個活頁簿;隨機選取……
- 精確公式複製多個儲存格而不變更公式參照;自動建立參照至多個工作表;插入項目符號、複選框及更多……
- 收藏並快速插入公式、範圍、圖表與圖片;加密儲存格並設定密碼;建立郵件清單並寄送電子郵件……
- 提取文本、添加文本、刪除某位置字元、移除空格;建立並列印數據分頁統計;在儲存格內容與註解之間轉換……
- 超級篩選(儲存並套用篩選方案至其他工作表);高級排序依月份/週/日、頻率等;特殊篩選依粗體、斜體……
- 合併活頁簿與工作表;合併表格依據關鍵列;分割數據至多個工作表;批次轉換 xls、xlsx 與 PDF……
- 資料透視表依週數、星期幾等分組……顯示未鎖定、選區鎖定以不同顏色標示;突顯包含公式/名稱的儲存格……

- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 與 Project 中啟用分頁式編輯與閱讀,提升工作效率!
- 在同一視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
- 每天為您提升 50% 的工作效率,省下數百次滑鼠點擊!
