KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中計算兩個日期之間的百分比?

作者Xiaoyang修改日期

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

下圖顯示一份範例任務清單,包含開始日期、結束日期以及期望計算出的完成百分比:

計算兩個日期之間的百分比


使用公式計算兩日期之間的完成百分比

若要計算兩日期之間任務的完成百分比,可使用以 Excel 的 DATEDIFTODAY 函數為基礎的公式。當您資料量較小且資料集不常變動時,此方法相當適用。

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)。

注意事項與疑難排解:

  • 若您的任務資料分散於不同欄位,請調整程式碼中的 StartDateColEndDateColPercentCol,使其符合您工作表的實際配置。
  • 若指令碼顯示 "Date error""Invalid dates",請檢查是否存在空白列、日期輸入錯誤,或開始日期與結束日期重疊、順序不正確等情形。
  • 此方法能確保您的百分比計算結果始終精準,並在大量編輯資料或從其他來源匯入資料後即時更新。

此 VBA 解決方案專為重複性資料準備與自動化報表製作而設計,有效避免手動複製公式所導致的低效率。



更多相關百分比文章:

  • 根據百分比折扣計算原始價格
  • 日常生活中,購物中心經常推出商品折扣。若您已知折扣後的價格與折扣百分比(如下圖所示),該如何在 Excel 中計算出該商品的原始價格呢?
  • 使用 COUNTIF 函數在 Excel 中計算百分比
  • 例如,我有一份研究報告摘要,其中包含三個選項 A、B 和 C,現在希望計算這三個選項各自所佔的百分比——也就是選項 A 在所有選項中所占的比例。本文將說明如何在指定範圍內計算特定選項的百分比。

  • 超強編輯欄(輕鬆編輯多行文字與公式);閱讀版面(輕鬆閱讀與編輯大量儲存格);貼上至篩選範圍……
  • 合併儲存格/列/欄並保留資料;分割儲存格內容;合併重複行並加總/平均……防止重複項儲存格;比較範圍……
  • 選取重複或唯一列;選取空白列(所有儲存格皆為空);超級查找與模糊搜尋多個活頁簿;隨機選取……
  • 精確公式複製多個儲存格而不變更公式參照;自動建立參照至多個工作表;插入項目符號、複選框及更多……
  • 收藏並快速插入公式、範圍、圖表與圖片;加密儲存格並設定密碼;建立郵件清單並寄送電子郵件……
  • 提取文本、添加文本、刪除某位置字元、移除空格;建立並列印數據分頁統計;在儲存格內容與註解之間轉換……
  • 超級篩選(儲存並套用篩選方案至其他工作表);高級排序依月份/週/日、頻率等;特殊篩選依粗體、斜體……
  • 合併活頁簿與工作表;合併表格依據關鍵列;分割數據至多個工作表批次轉換 xls、xlsx 與 PDF……
  • 資料透視表依週數、星期幾等分組……顯示未鎖定、選區鎖定以不同顏色標示;突顯包含公式/名稱的儲存格……
kte tab 201905
  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 與 Project 中啟用分頁式編輯與閱讀,提升工作效率!
  • 在同一視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,省下數百次滑鼠點擊!
officetab bottom