エクセルのDATEDIF・NOW・TIME関数で経過時間を自由に算出するテクニック

 


 

 

  1. 01. はじめに
  2. 02. この記事でできること
    1. この記事の対象者
    2. 読み進め方のポイント
  3. 03. 基本の考え方|Excelで日付・時間を扱う仕組み
    1. 日付は「連続した数字」だった!
    2. 時間は「1日の小数値」として扱われている
    3. シリアル値とは?初心者でも納得の説明
  4. 04. 経過年数・月数・日数の計算方法【DATEDIF関数の使い方】
    1. h3. DATEDIF関数の基本書式と用途
    2. 年数の経過を求める:=DATEDIF(開始日, 終了日, "Y")
    3. 月数の経過を求める:=DATEDIF(開始日, 終了日, "YM")
    4. 日数の経過を求める:=DATEDIF(開始日, 終了日, "D")
    5. 「○年○か月」のような組み合わせ表示
    6. DATEDIF関数の注意点と落とし穴
  5. 05. 時間(hour)・分(minute)・秒(second)の計算方法【TIME関数と演算】
    1. 時間差の求め方の基本:単純な引き算
    2. =TEXT関数で「○時間○分」表示に整える
    3. 24時間以上の差を扱う場合の注意点
    4. 工数計算に便利な「HOUR」「MINUTE」「SECOND」関数
  6. 06. 現在との経過時間を求める方法|NOW・TODAY関数の活用
    1. 今日までの経過日数:=TODAY() – 開始日
    2. 今この瞬間までの時間:=NOW() – 開始時刻
    3. 動的に経過時間を表示する表の作り方
  7. 07. 実務で役立つ!経過時間計算の具体的な活用例
    1. サービス利用年数の自動更新
    2. 業務開始から何時間経過したかを確認
    3. 入社日からの勤続年数を表示する社員リスト
    4. 顧客との契約期間を「残り何か月」で表示
    5. タイムカードの時間差計算(始業~終業)
  8. 08. よくあるエラー・トラブルとその対処法
    1. DATEDIF関数が表示されない・エラーになる
    2. 時間計算が「######」と表示される理由
    3. マイナス時間・負の値になってしまうときの対処
    4. シリアル値が日付に見えない・変換されないケース
  9. 09. 関数を使わずに経過時間を出す方法(書式設定+演算のみ)
    1. 簡単な日数差の計算:=セルA – セルB
    2. セルの表示形式をカスタマイズして時間差を見やすく
    3. IF関数やTEXT関数と組み合わせて視覚的にわかりやすく
  10. 10. まとめ
    1. 関数の使い分け早見表
    2. 日付・時間計算に強くなる近道
    3. 今日から活かせるExcelスキルとして定着させよう

01. はじめに

日々の業務や日常の中で、「あれから何年経った?」「今って何日目?」「開始から何時間?」といった“経過時間”を知りたい場面は数多く存在します。

たとえば、サービス利用年数、入社からの勤続年数、プロジェクトの経過日数、あるいはシフト中の労働時間など、「どれだけの時間が経ったか」を可視化することで、業務の管理がグッと楽になります。

こうした経過時間を、紙のカレンダーや手計算で求めるのは大変ですが、Excel(エクセル)なら、関数を使って「年数」「月数」「日数」「時間」まで正確に計算することが可能です。

本記事では、Excelを使った経過時間の計算方法について、初心者でも理解しやすいように一つひとつ丁寧に解説していきます。

特に、以下のような方にとって有益な内容となっています。

  • Excelで日付や時間の差を求める方法がわからない
  • 「○年○か月」「○時間○分」のように見やすく表示したい
  • 関数の組み合わせや書式設定で工夫したい

正確な経過時間の把握は、スケジュール管理やパフォーマンス分析に欠かせない重要なスキルです。

さっそく、次章ではこの記事を読むことで「どんなことができるようになるのか」について紹介します。

02. この記事でできること

このブログ記事を最後まで読むことで、以下のような「経過時間」に関するExcelスキルが身につきます。

  • 開始日と終了日から正確な年数・月数・日数を算出する方法
  • 開始時刻と終了時刻から時間・分・秒を算出する方法
  • 「今現在から何日経過したか」を動的に求める方法
  • 見やすい形式で「○年○か月」「○時間○分」を表示するテクニック
  • 実務に活かせる経過時間の具体的な活用パターン

Excelは単なる表計算ソフトではなく、「日付と時間を扱うのが非常に得意なツール」です。特に、日常業務やデータ管理の現場では、正確な経過時間の把握が求められるケースが少なくありません。

本記事では、単純な引き算だけでは見えてこないExcelの時間管理の真の力を、基礎から実務応用まで段階的に解説していきます。

この記事の対象者

  • Excelで経過日数・年数・時間などを自動で計算したい方
  • 勤務時間や稼働時間、契約期間などを効率的に管理したい方
  • Excelを使った業務の自動化・効率化を目指している方

読み進め方のポイント

章ごとに「日数」「年数」「時間」といった単位別に解説しています。ご自身の目的に合った章から読んでいただいても問題ありません。

それではまず、Excelで日付・時間を扱う際の「基本の考え方」から解説していきましょう。

03. 基本の考え方|Excelで日付・時間を扱う仕組み

経過時間を正確に求めるには、まず「Excelが日付や時間をどのように扱っているか」という基本の仕組みを理解することが大切です。見た目は「2025/07/09」や「13:30」のように表示されていても、Excelの内部ではすべて“数値”として扱われています

日付は「連続した数字」だった!

Excelでは、1900年1月1日を「1」とする通し番号(シリアル値)で日付を管理しています。たとえば、

  • 1900年1月1日 → 1
  • 1900年1月2日 → 2
  • 2025年7月9日 → 45194

このように、日付の差は単純な数値の引き算で計算できます。たとえば「2025/07/09 - 2025/07/01」は「45194 - 45186 = 8」となり、「8日経過」という結果が得られます。

時間は「1日の小数値」として扱われている

時間は、1日を「1」として、その一部を小数で表しています。たとえば:

  • 12:00(正午) → 0.5
  • 6:00 → 0.25
  • 18:00 → 0.75

つまり、日付と時間は同じ「数値形式」で連続的に管理されているのです。

シリアル値とは?初心者でも納得の説明

Excelにおける「シリアル値」とは、日付や時間を示すための「通し番号」のようなものです。たとえば、

  • 「2025/07/01 12:00」→ シリアル値は「45186.5」

この仕組みを知っておくと、関数や演算を使って「年数」「月数」「時間差」などを柔軟に計算できるようになります。

この章のポイントを押さえることで、Excelでの時間計算に対する理解が格段に深まります。

次章では、実際に「年数・月数・日数」を求める代表的な関数である DATEDIF関数 の使い方を解説します。

04. 経過年数・月数・日数の計算方法【DATEDIF関数の使い方】

「○年経った」「○か月経過した」「○日間が過ぎた」といった表現をExcelで求める場合、DATEDIF(デイトディフ)関数が非常に便利です。

ただし、DATEDIF関数はExcelのヘルプに表示されない“隠れ関数”の一種です。そのぶん使い方には注意も必要です。

h3. DATEDIF関数の基本書式と用途

DATEDIF関数の基本構文は以下のとおりです:

=DATEDIF(開始日, 終了日, 単位)

「単位」には、以下の文字列を使うことで計算したい単位を指定します:

  • “Y”:満年数
  • “M”:満月数
  • “D”:総日数
  • “YM”:年を除いた月数
  • “MD”:月・年を除いた日数
  • “YD”:年を除いた総日数

年数の経過を求める:=DATEDIF(開始日, 終了日, "Y")

入社日からの満年数や、サービス利用年数などに使えます。

=DATEDIF(A2, B2, "Y")

A2セルに「開始日」、B2セルに「終了日」が入力されていれば、「満年数」が求められます。

月数の経過を求める:=DATEDIF(開始日, 終了日, "YM")

満年を除いた“月”の部分を取り出したいときに使用します。たとえば「2年7か月」の「7か月」の部分です。

=DATEDIF(A2, B2, "YM")

日数の経過を求める:=DATEDIF(開始日, 終了日, "D")

単純に総日数の経過を知りたい場合はこちらを使います。

=DATEDIF(A2, B2, "D")

たとえば「2023/01/01 〜 2023/12/31」は「364」と表示されます。

「○年○か月」のような組み合わせ表示

以下のようにTEXT関数や&演算子を使って、人が読みやすい形式にすることも可能です:

=DATEDIF(A2,B2,"Y") & "年" & DATEDIF(A2,B2,"YM") & "か月"

→ 「3年2か月」などと表示されます。

DATEDIF関数の注意点と落とし穴

  • 開始日が終了日より後だとエラー(#NUM!)になります
  • 単位の指定は半角・大文字で正確に
  • 「MD」「YD」「YM」は複雑なカレンダー計算が絡むためズレる可能性あり

DATEDIF関数は古くからある関数ですが、経過期間を「年・月・日」単位で柔軟に求められる数少ない手段として今なお現役です。

次章では、日付ではなく「時間差(◯時間◯分)」を求めたいときに便利な、時間計算のテクニックをご紹介します。

05. 時間(hour)・分(minute)・秒(second)の計算方法【TIME関数と演算】

Excelで「開始時刻から終了時刻までに何時間・何分経ったか」を求めたい場合は、単純な引き算と時間関数を組み合わせて計算します。

時間差の求め方の基本:単純な引き算

たとえば、A2セルに「8:30」、B2セルに「17:15」と入力されているとします。このとき、

=B2 - A2

と入力すると、「0.364583」などと表示されます。これは、「1日=1」としたときの小数表現です。

これを見やすい形式にするには、表示形式を「h:mm」または「[h]:mm」に変更するか、TEXT関数を使います。

=TEXT関数で「○時間○分」表示に整える

=TEXT(B2 - A2, "h時間mm分")

この関数を使えば、「8時間45分」など、視覚的にわかりやすい形で表示できます。

24時間以上の差を扱う場合の注意点

Excelの標準の時間表示形式(h:mm)は24時間を超えると「0:00」などとリセットされてしまいます。
24時間以上の差を正確に表示したい場合は「[h]:mm」の形式を使いましょう。

例:30時間15分 → 「30:15」と表示

工数計算に便利な「HOUR」「MINUTE」「SECOND」関数

Excelには時間成分を個別に取り出す関数も用意されています:

  • HOUR(時間セル):時間の部分(0〜23)を取得
  • MINUTE(時間セル):分の部分(0〜59)を取得
  • SECOND(時間セル):秒の部分(0〜59)を取得

たとえば、C2セルに「1:45:30」とあれば、

=HOUR(C2) → 1
=MINUTE(C2) → 45
=SECOND(C2) → 30

このように、「時間」「分」「秒」を自由に加工できるため、シフト管理や労働時間の算出に役立ちます。

次章では、こうした計算に「現在時刻」や「今日の日付」を動的に反映させるテクニックを紹介します。

 


 

 

06. 現在との経過時間を求める方法|NOW・TODAY関数の活用

日付や時間の差を求める際、「今日までに何日経ったのか」「今この瞬間で何時間経過したのか」といった“現在との経過時間”を自動で計算したい場面も多いでしょう。

Excelでは、TODAY関数NOW関数を使うことで、ファイルを開いた時点の現在日時を取得できます。

今日までの経過日数:=TODAY() – 開始日

たとえば、A2セルに「2020/01/01」という日付があり、「今日まで何日経ったか」を求めたいときは次のようにします:

=TODAY() - A2

これで、開始日から今日までの総日数を自動で取得できます。

今この瞬間までの時間:=NOW() – 開始時刻

NOW関数は「日付+時刻」を返すため、時刻までを含めた精密な差分が求められます。

=NOW() - A2

ここでA2に「2025/07/09 08:00」などの日時が入っていれば、そこから今現在までの日数+時間の差が算出されます。

見やすく表示したい場合は、TEXT関数と組み合わせます:

=TEXT(NOW() - A2, "[h]時間mm分")

→ たとえば「35時間20分」などの形式で表示されます。

動的に経過時間を表示する表の作り方

たとえば以下のような構成にすれば、「開始日時」から「今この瞬間」までの経過時間を、リアルタイムで把握できる一覧表を作成できます:

開始日時 経過時間(時間)
2025/07/08 09:00 =TEXT(NOW()-A2,”[h]時間mm分”)

NOW関数はファイルを開いたタイミングや再計算時に更新されるため、常に最新の経過時間が表示されます。

次章では、こうした時間計算をどのように「実務の現場」で活かせるか、具体例を交えて紹介していきます。

07. 実務で役立つ!経過時間計算の具体的な活用例

ここでは、Excelでの経過時間計算が実際の業務でどのように活用されているか、具体的なシーン別に紹介します。

サービス利用年数の自動更新

顧客管理シートなどで、各ユーザーの「利用年数」を表示したい場合:

=DATEDIF(開始日, TODAY(), "Y") & "年" & DATEDIF(開始日, TODAY(), "YM") & "か月"

→ ファイルを開くたびに自動で更新され、最新の利用年数が表示されます。

業務開始から何時間経過したかを確認

プロジェクトや作業単位で「開始時刻」から「現在時刻」までの経過時間をリアルタイムで確認したい場合:

=TEXT(NOW() - 開始時刻セル, "[h]時間mm分")

→ タイムトラッキングや自己管理にも有効です。

入社日からの勤続年数を表示する社員リスト

人事系のリストにおいて「入社から何年か」を表示したいとき:

=DATEDIF(入社日セル, TODAY(), "Y")

さらに、「○年○か月」のような形式にしたければ、”YM”を併用しましょう。

顧客との契約期間を「残り何か月」で表示

契約終了日が決まっている場合、今日から逆算して「残り期間」を表示できます:

=DATEDIF(TODAY(), 終了日セル, "M") & "か月"

契約満了が近づいている顧客をリストアップする際に便利です。

タイムカードの時間差計算(始業~終業)

日々の勤務時間を求めたい場合は、単純な引き算とTEXT関数で対応できます:

=TEXT(終業時刻セル - 始業時刻セル, "h時間mm分")

また、昼休憩を除く場合は:

=TEXT((終業-始業) - 休憩時間, "h時間mm分")

→ 労働時間を可視化し、勤怠管理を効率化できます。

このように、経過時間の計算はさまざまな業務に直結する実用的な技術です。しかも一度作ってしまえば自動で更新されるので、業務効率が飛躍的に向上します。

次章では、こうした作業中に起こりがちなエラーやトラブルとその対処法について解説します。

08. よくあるエラー・トラブルとその対処法

Excelで日付や時間の経過を計算していると、意図しないエラー表示や数値のズレに遭遇することがあります。この章では、よくあるトラブルとその解決方法をケース別に解説します。

DATEDIF関数が表示されない・エラーになる

DATEDIF関数は古いバージョンから存在している「隠れ関数」のため、以下のような現象がよくあります:

  • 入力補完が表示されない(手入力が必要)
  • 開始日が終了日より後だと #NUM! エラーになる
  • 引数の”Y”や”YM”が全角だと認識されない

→ 対策としては、日付の前後関係をIF関数でチェックしたり、関数の構文をコピペするなどでミスを防ぎましょう。

時間計算が「######」と表示される理由

Excelで時間の差を計算したとき、セルに「######」と表示されることがあります。

この原因は、表示形式が「時刻」になっているのに、結果が負の値(マイナス時間)になっているためです。

時刻形式では負の時間を表示できないため、#######というエラー表示になります。

解決法:IF関数でマイナスのときに空白を返すなど、エラー処理を加えましょう。

=IF(終了時刻 < 開始時刻, "", 終了時刻 - 開始時刻)

マイナス時間・負の値になってしまうときの対処

開始と終了の順番を間違えたり、日付を跨ぐような夜勤の時間などで「負の値」が出てしまうことがあります。

たとえば、22:00〜翌6:00までの勤務など。

この場合、Excelでは単純な引き算だとマイナスになってしまいます。

対策方法

=MOD(終了時刻 - 開始時刻, 1)

MOD関数を使えば、日を跨いでも正しい時間差を算出できます。

シリアル値が日付に見えない・変換されないケース

数式の結果が「45000」や「0.458333」など、意味不明な数字に見えることがあります。

これは、セルの表示形式が「標準」や「数値」のままになっていることが原因です。

解決法

  • セルの書式設定 → 表示形式を「日付」や「時刻」に変更
  • または、TEXT関数で見やすい形に整形
=TEXT(セル, "yyyy/mm/dd")

こうした基本的なエラー対処を覚えておくだけで、トラブルによる作業停止を防ぐことができます。

次章では、関数を使わずに「簡単な演算や表示形式の設定」だけで経過時間を求める方法もご紹介します。

09. 関数を使わずに経過時間を出す方法(書式設定+演算のみ)

ここまで、さまざまな関数を使って経過時間を求める方法を紹介してきましたが、実は関数を使わなくても簡単な引き算と表示形式の工夫だけで、ある程度の時間差や日数を求めることができます。

簡単な日数差の計算:=セルA – セルB

日付同士で単純に引き算をすると、「何日経過したか」を数値で取得できます。

=B2 - A2

たとえば、B2が「2025/07/09」、A2が「2025/07/01」の場合、「8」という結果になります。

日付のシリアル値を直接扱っているため、特別な関数を使う必要はありません。

セルの表示形式をカスタマイズして時間差を見やすく

時刻の引き算も、適切な表示形式を指定すれば、関数なしでも読みやすくなります。

たとえば、

  • A2:開始時刻(9:00)
  • B2:終了時刻(17:45)
  • C2:=B2 – A2

このとき、C2セルの表示形式を「[h]時間mm分」とカスタム設定すれば、C2に「8時間45分」と表示されます。

IF関数やTEXT関数と組み合わせて視覚的にわかりやすく

関数を最小限に抑えつつ、視認性を高めたい場合は、IF関数やTEXT関数を組み合わせると便利です。

たとえば、マイナス値を非表示にしたい場合:

=IF(B2<A2,"",TEXT(B2-A2,"h:mm"))

→ 終了時刻が未入力(=B2が空)などの場合でもエラー表示を防げます。

このように、関数を使いすぎず、見やすさ・安定性を優先した設計もExcelの大切な技術です。

最後に、これまで紹介した内容のポイントをまとめ、日付・時間計算を自分の業務に定着させるためのコツをご紹介します。

 


 

 

10. まとめ

今回は、Excelを使って「年数」「月数」「日数」「時間」などの経過時間を正確に計算する方法を、基礎から実務応用まで幅広く解説しました。

関数の使い分け早見表

目的 関数/方法
満年数 DATEDIF =DATEDIF(A2,B2,”Y”)
月数(年を除く) DATEDIF =DATEDIF(A2,B2,”YM”)
日数 DATEDIF/引き算 =DATEDIF(A2,B2,”D”)
時間差 引き算+TEXT =TEXT(B2-A2,”h:mm”)
24時間以上の時間差 MOD+表示形式 =MOD(B2-A2,1)

日付・時間計算に強くなる近道

  • Excelの日付・時刻は「シリアル値」として扱われていることを理解する
  • DATEDIF関数とNOW・TODAY関数を使いこなす
  • TEXT関数とカスタム表示形式で“見やすさ”を意識する

今日から活かせるExcelスキルとして定着させよう

経過時間の計算は、単なる数字遊びではなく、ビジネスの現場で役立つ実践スキルです。

とくに、日付や時間の差分を自動で表示することで、手間の削減や作業の見える化、効率化に大きく貢献できます。

まずは簡単な表から、少しずつ試してみましょう。そして自分の業務にフィットする方法を見つけてください。

この1記事で、あなたのExcelスキルが一歩前進することを願っています。

コメント

タイトルとURLをコピーしました