Excel で2 つの日付間の割合を計算するには、どうすればよいでしょうか?
Excel で進行中のプロジェクトを管理したり、スケジュールされたタスクの進捗を監視したりする際、今日の日付を基にタスク期間のうちどれだけが経過したかを計算する必要がよくあります。これにより、経過時間を計画期間全体に対するパーセンテージで表し、プロジェクトが予定より前倒しで進んでいるか、順調か、あるいは遅れているかを的確に評価できます。たとえば、各タスクに固有の開始日と終了日が設定されたワークシートがあるとします。その場合、今日時点で各タスクのスケジュール期間の何パーセントが経過しているかを把握したいはずです。このチュートリアルでは、Excel でそのような計算を実現する実用的な方法を解説し、進捗パーセンテージを自動更新する手順と、条件付き書式を使って結果に基づきタスクを視覚的に強調表示する方法もご紹介します。
次のスクリーンショットは、開始日、終了日、および目標の完了率を含むサンプルのタスクリストを示しています。

数式を使用して2 つの日付間の完了率を計算する
2 つの日付間のタスク完了率を計算するには、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 の3 つのオプションが含まれているとします。このとき、それぞれの選択肢が全体に占める割合——たとえば選択肢 A の割合——を計算したい場合があります。本記事では、指定範囲内における特定の選択肢の割合を取得する方法をご紹介します。
最高のオフィス生産性ツール
Kutools for Excel は、あなたの課題のほとんどを解決し、生産性を80% 向上させます
- スーパー数式バー(複数行のテキストや数式を簡単に編集可能);リーディングレイアウト(多数のセルを簡単に読み書き可能);フィルタリング範囲に貼り付け…
- 結合セル/行/列とデータ保持;セルの分割コンテンツ;重複行を結合して合計/平均を計算…重複の入力を防止セル;範囲を比較…
- 重複または一意の行を選択;空白行を選択(すべてのセルが空);スーパー検索とあいまい検索多数のワークブック内で実行;ランダム選択…
- 正確にコピー複数セルを数式参照を変更せずに移動;複数シートへの参照を自動作成;箇条書きの挿入、チェックボックスなど…
- お気に入りの数式を保存して素早く挿入、範囲、チャート、画像;セルの暗号化パスワード付きで保護;メーリングリストの作成メール送信など…
- テキストの抽出、テキストの追加、特定の位置の文字を削除、スペースを削除;データページ統計を作成・印刷;セルの内容とコメントを相互変換…
- スーパーフィルター(フィルタースキームを保存し、他のシートに適用可能);高度なソート月/週/日、頻度などでグループ化;特殊フィルタ太字、イタリック体などで強調表示…
- ワークブックとワークシートを統合;テーブルのマージをキーカラムに基づいてマージ;データの分割を複数のシートに分割;xls、xlsx、PDF を一括変換…
- PivotTable を以下でグループ化:週番号、曜日など…ロック解除済みセルと選択範囲をロックを異なる色で表示;数式/名前を持つセルをハイライト表示…

- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効化。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 生産性が50%向上し、毎日数百回のマウスクリックを削減できます!
