如何在 Excel 中計算兩個日期之間的百分比?
在 Excel 中管理進行中的專案或監控計劃任務的進度時,通常需要根據今天的日期來計算任務持續時間的多少已經過去。這使您能夠通過將經過的時間表示為總計劃持續時間的百分比來評估專案是否提前、按計劃或落後於進度。例如,您可能有一個包含任務的工作表,每個任務都有自己的開始和結束日期。您會想知道,截至今天,每個任務的計劃期間已經過去了多少百分比。本教程將引導您完成在 Excel 中實現此目的的實際方法,概述自動更新進度百分比的方法,並展示如何使用條件格式根據這些結果突出顯示任務。
以下截圖顯示了一個範例任務列表,其中包含開始日期、結束日期以及所需的完成百分比計算:
使用公式計算兩個日期之間的完成百分比
為了計算兩個日期之間任務的完成百分比,您可以使用基於 Excel 的 DATEDIF 和 TODAY 函數的公式。這種方法適用於您有少量任務且數據集不經常更改的情況。
1. 在您想查看結果的那一列的空白單元格中(例如,在單元格 D2 中)輸入以下公式:
=(DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1)
參數解釋:
B2 是包含任務開始日期的單元格,而 C2 是包含任務結束日期的單元格。 TODAY() 自動返回今天的日期,因此公式計算自任務開始以來已經過了多少天,並將其除以整個計劃長度。
2. 輸入公式後,拖動填充柄向下複製公式到所有必要的行。每一行都會根據今天的日期顯示該任務的當前完成情況。以下示例演示了應用於多個任務的情況:
3. 選擇所有已計算的單元格。轉到“主頁”選項卡,然後點擊“數字”組中的“百分比樣式”按鈕,將值顯示為百分比而不是小數。您可以進一步使用“增加小數位”和“減少小數位”按鈕調整小數位數,以達到理想的精度。
注意事項:這種方法非常靈活,但您需要確保所有的日期單元格都格式化為實際的日期;否則可能會出現錯誤或不正確的值。
如果您希望結果每天自動更新,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
以匹配您的工作表佈局。 - 如果腳本顯示“日期錯誤”或“無效日期”,請檢查是否有空白行、不正確的日期條目或重疊/不正確的開始結束日期。
- 此方法確保對所有任務的百分比計算保持準確和更新,特別是在大量數據編輯後或從其他來源導入時。
此 VBA 解決方案對於定期數據準備和自動化報告非常實用,尤其是手動複製公式效率低下的情況。
更多相關百分比文章:
- 從百分比折扣計算原價
- 通常,在日常生活中,購物商場裡有一些產品打折。如果您有折扣價格和百分比折扣如下圖所示,如何在 Excel 中計算該產品的原價呢?
- 計算已過年份或月份的百分比
- 假設,您在工作表中有一系列日期,現在您想根據給定的日期獲取已過年份或月份的百分比或剩餘百分比。如何在 Excel 中解決這個問題?
- 從列表中計算“是”和“否”的百分比
- 如何在 Excel 工作表的範圍單元格列表中計算“是”和“否”文本的百分比?也許本文將幫助您處理這個任務。
- 創建帶有百分比和值的圖表
- 我們很容易在柱狀圖或條形圖中添加百分比或值,但是,您是否嘗試過在 Excel 中創建一個同時顯示百分比和值的柱狀圖或條形圖?
- 使用 COUNTIF 計算 Excel 中的百分比
- 例如,我有一份研究論文的摘要報告,其中有三個選項 A、B、C,現在我想計算這三個選項的百分比。也就是說,我需要知道選項 A 占所有選項的百分比。本文將討論如何獲取特定選項在範圍內的百分比。
- 超級公式欄(輕鬆編輯多行文字和公式);閱讀版面(輕鬆閱讀和編輯大量儲存格);貼上到已篩選區域...
- 合併儲存格/列/欄並保留數據;分割儲存格內容;合併重複列並求和/平均值... 防止重複儲存格;比較區域...
- 選擇重複或唯一列;選擇空白列(所有儲存格均為空);在多個工作簿中進行超級查找和模糊查找;隨機選擇...
- 精確複製多個儲存格而不改變公式引用;自動創建對多個工作表的引用;插入項目符號、核取方塊等...
- 收藏並快速插入公式、區域、圖表和圖片;使用密碼加密儲存格;建立郵件清單並發送電子郵件...
- 提取文本、添加文本、按位置刪除、刪除空格;創建並打印分頁小計;在儲存格內容和批註之間轉換...
- 超級篩選(保存並應用篩選方案到其他工作表);高級排序按月/週/日、頻率等;特殊篩選按粗體、斜體...
- 合併工作簿和工作表;基於關鍵列合併表格;將數據分割到多個工作表;批量轉換 xls、xlsx 和 PDF...
- 資料透視表按週數、星期幾等分組... 用不同顏色顯示未鎖定、已鎖定的儲存格;突出顯示包含公式/名稱的儲存格...

- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
- 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
- 提高您的生產力 50%,每天減少數百次鼠標點擊!
