メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelで2つの日付間のパーセンテージを計算するには?

Author Xiaoyang Last modified

Excelで進行中のプロジェクトを管理したり、スケジュールされたタスクの進捗を監視する際、今日の日付に基づいてタスクの期間がどれだけ経過したかを計算することがしばしば必要です。これにより、経過時間を合計計画期間に対するパーセンテージで表すことで、プロジェクトが予定よりも前倒しであるか、予定通りか、遅れているかを評価できます。例えば、開始日と終了日を持つタスクが記載されたワークシートがある場合、今日時点で各タスクの予定期間の何パーセントが経過したのかを知りたいと思うでしょう。このチュートリアルでは、Excelでこれを達成するための実用的な方法を説明し、進捗率の自動更新方法を概説し、条件付き書式を使用してこれらの結果に基づいてタスクを目立たせる方法も紹介します。

次のスクリーンショットは、開始日、終了日、および完了率の計算結果を持つサンプルタスクリストを示しています。

calculate the percentage between two dates


数式を使用して2つの日付間の完了率を計算する

2つの日付間のタスクの完了率を計算するために、ExcelのDATEDIF関数とTODAY関数に基づいた数式を使用できます。このアプローチは、タスクの数が少なく、データセットが頻繁に変更されない場合に適しています。

1. 結果を表示したい行の空白セル(例:セルD2)に次の数式を入力します。

=(DATEDIF(B2,TODAY(),"d")+1)/(DATEDIF(B2,C2,"d")+1)

パラメーターの説明:
B2 はタスクの開始日が入力されているセルであり、 C2 はタスクの終了日が入力されているセルです。 TODAY() は今日の日付を自動的に返します。したがって、この数式はタスクが始まってから何日経過したかを計算し、それをタスクの全予定期間で割ります。

2. 数式を入力したら、フィルハンドルをドラッグしてすべての必要な行に数式をコピーします。すると、各行は今日の日付に基づいてそのタスクの現在の完了率を表示します。以下の例は、複数のタスクに適用した結果を示しています。

3. 計算されたすべてのセルを選択します。ホームタブに移動し、数値グループにあるパーセンテージスタイルボタンをクリックして、小数ではなくパーセンテージとして値を表示します。さらに、小数点以下の桁数を増加または減少させるボタンを使用して、希望する精度に調整できます。

format the cell values as percentage format

注意: この方法は非常に柔軟ですが、すべての日付セルが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 を押すか(または Run button 実行ボタンをクリックして)スクリプトを実行します。このバッチ処理により、即座に現在の日付に基づいて各行のパーセンテージ列(D列)が埋められます。

注意事項およびトラブルシューティング:

  • タスクデータが異なる列に入っている場合、コード内のStartDateColEndDateColPercentColをシートレイアウトに合わせて調整してください。
  • スクリプトが「日付エラー」や「無効な日付」を表示する場合、空白の行、誤った日付の入力、または重複/誤った開始-終了日がないか確認してください。
  • このアプローチは、特に大量のデータ編集を行った後や他のソースからインポートした際に、すべてのタスクのパーセンテージ計算が正確に更新されることを保証します。

このVBAソリューションは、手動での数式コピーが非効率的な反復データ準備や自動レポート作成に実用的です。



関連するパーセンテージ記事:

  • 割引率からの元価格の計算
  • 通常、日常生活において、ショッピングモールで割引されている商品もあります。次のスクリーンショットのように、割引価格と割引率を持っている場合、Excelでその商品の元価格をどのように計算すればよいでしょうか?
  • 経過年または月のパーセンテージの計算
  • ワークシートに日付のリストがあると仮定し、与えられた日付に基づいて経過した年または月、または残りの年または月のパーセンテージを得たいと思います。Excelでこの作業を解決するにはどうすればよいですか?
  • ExcelでCOUNTIFを使用してパーセンテージを計算する
  • 例えば、研究論文の要約レポートがあり、3つのオプションA、B、Cがあるとします。ここで、これら3つのオプションそれぞれのパーセンテージを計算したいとします。つまり、オプションAが全オプションの中で占めるパーセンテージを知りたいのです。この記事では、特定のオプションのパーセンテージを取得する方法について説明します。

  • スーパー数式バー(複数行のテキストや数式を簡単に編集可能); 閲覧レイアウト(多数のセルを簡単に読み取り・編集可能); フィルター範囲への貼り付け...
  • セル/行/列を結合してデータを保持; セル内容を分割; 重複する行を統合して合計/平均を計算... 重複セルを防止; 範囲を比較...
  • 重複または一意の行を選択空白行を選択(すべてのセルが空); スーパー検索および多くのワークブックでのあいまい検索; ランダム選択...
  • 数式参照を変更せずに複数のセルを正確にコピー; 複数のシートへの自動参照作成; 箇条書き、チェックボックスなどを挿入...
  • お気に入りの数式、範囲、グラフ、画像を素早く挿入; パスワードでセルを暗号化メーリングリストを作成してメールを送信...
  • テキストの抽出、テキストの追加、特定の位置の文字を削除、スペースを削除; ページング小計の作成と印刷; セルの内容とコメント間の変換...
  • スーパーフィルター(他のシートにフィルタースキームを保存して適用); 月/週/日ごとの高度な並べ替え、頻度など; 太字、斜体による特殊フィルタリング...
  • ワークブックとワークシートを統合; 主キーカラムに基づいてテーブルをマージ; データを複数のシートに分割xls、xlsx、PDFの一括変換...
  • ピボットテーブルのグループ化(週番号、曜日など)... ロックされたセルとロックされていないセルを異なる色で表示; 数式/名前を持つセルをハイライト...
kte tab 201905
  • Word、Excel、PowerPoint、Publisher、Access、Visio、Projectでタブ付き編集と閲覧を有効化します。
  • 新しいウィンドウではなく、同じウィンドウ内の新しいタブで複数のドキュメントを開き、作成します。
  • 生産性を50%向上させ、毎日数百回のマウスクリックを削減します!
officetab bottom