Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /home/xs182025/consulting-campus.site/public_html/wp-includes/functions.php on line 6114
Excelで日付を引き算して差を求める。日数・月数・年数単位等 | CONSULTING CAMPUS

Excelで日付を引き算して差を求める。日数・月数・年数単位等

calculate-date-difference-with-datedif-in-excel エクセル
この記事は約12分で読めます。
スポンサーリンク

本記事では、Excelで日付を引き算して差を求める方法をシンプルかつ構造的に解説します。日単位・月単位・年単位など、日付の差を計算したいケースに応じてそれぞれ簡単な数式を具体例とともに説明していきます。

  • 今日時点での年齢を自動で計算したい
  • 去年の日付と今年の日付の日数の差を計算したい
スポンサーリンク

任意の単位で日付を引き算して差を求める方法

ExcelのDATEDIF関数を使用して任意の単位で日付を引き算して差を求めることができます。

  • 構文:
    DATEDIF(開始日, 終了日, 単位)
  • 各引数の説明:
    引数説明
    開始日必須開始日
    終了日必須終了日
    単位必須結果の単位
    ("Y": 年, "M": 月, "D": 日, "MD": 月を切り捨てた日, "YM": 年を切り捨てた月, "YD": 年を切り捨てた日)
  • 参考: マイクロフト公式ドキュメント
補足: この関数は隠されており、Excelの一部のバージョンではドキュメント化されていない可能性があります。

特に第3引数の”結果の単位”が日付を引き算して差を求める際に重要となります。詳しい使い方については次のセクションで解説します。

DATEDIF関数を使用して日付を引き算する方法

先に解説した通り、DATEDIF関数を使用して日付を引き算するためには[開始日][終了日]に任意の日付データを入力し、第3引数の[結果の単位]に決められた値を入力する必要があります。

[開始日]と[終了日]への設定例

[開始日]と[終了日]には、セル参照・日付を示す文字列・日付を示すシリアル値を入力することができます。それぞれ詳しく解説します。

1. セル参照を使用する

セル参照を使用する場合、DATEDIF関数の開始日と終了日の引数には、日付が入力されているセルを指定します。これは、動的に日付が変わる可能性がある場合や、ユーザーが入力した日付に基づいて計算を行いたい場合に便利です。

使用例:

  • A2セルに開始日 2024-01-01
  • B2セルに終了日 2024-04-01
=DATEDIF(A2, B2, "D")
日付間の差(日数)を計算

この式は、A1セルとB1セルに指定された日付間の差(日数)を計算します。

2. 日付を示す文字列を使用する

日付を示す文字列を直接引数として使用する場合、日付はダブルクォーテーションで囲み、適切な日付フォーマット(例えば “YYYY-MM-DD”)で入力します。この方法は、特定の固定された日付で計算を行いたい場合に適しています。

使用例:

=DATEDIF("2024-01-01", "2024-04-01", "M")
2024年1月1日から2024年4月1日までの月数の差の計算

この式は、2024年1月1日から2024年4月1日までの月数の差を計算します。

3. 日付を示すシリアル値を使用する

Excel内部では、日付はシリアル値として格納されます。このシリアル値は、1900年1月1日を基準とした連続した日数です。日付をシリアル値で直接指定することも可能ですが、この方法は一般的ではありません。

使用例:

  • 2024年1月1日のシリアル値は 44197
  • 2024年4月1日のシリアル値は 44288
=DATEDIF(44197, 44288, "D")
日付を示すシリアル値を使用する

この式は、2024年1月1日と2024年4月1日の日数の差を計算します。ただし、この方法はシリアル値を知っている、または計算する必要がある特定の状況でのみ使用します。

  • 引数の日付フォーマットは、Excelの地域設定によって異なる場合があります。日本語以外の言語設定をご使用の際は注意してください
  • DATEDIF関数では、[終了日]には[開始日]よりも後の日付を設定する必要があります。日付の大小関係が逆になっている場合、ExcelのDATEDIF 関数は #NUM!エラーとなります

日数: 2つの日付を引き算して日数の差を取得する方法

まずはじめに、DATEDIF関数を使用して日数の差を求める具体例を紹介していきます。DATEDIF関数には”D”, “MD”, “YD”という3つの方法で日数の差をカウントすることができます。それぞれの違いや使用するケースを下記でご紹介いたします。

1. “D” – 日数の差
  • 説明: “D” は2つの日付間の全日数の差を計算します。これは最も基本的な使い方で、単純に日数の総数を求めます。
  • 使用ケース: このオプションは、2つの日付間の完全な日数を知りたい場合に使用します。例えば、プロジェクトの期間計算、イベントまでの日数カウント、賃貸契約の日数計算などに使用されます。

使用例: 開始日が2024年1月1日、終了日が2024年1月31日の場合は30を返します。

=DATEDIF("2024-01-01", "2024-01-31", "D")
"D"単位の日数の差
2. “MD” – 月の日数差
  • 説明: “MD” は、開始日と終了日が属する月の日数の差を計算します。これは、2つの日付の月を超える部分を無視して、同じ月内での日付のように日数差を求める場合に使用します。
  • 使用ケース: このオプションは、月末締めの計算や、月をまたぐイベントの日数を月ごとに区切って計算したい場合に便利です。たとえば、賃貸料の日割り計算や、月ごとの作業日数の差分を求める際などに使用されます。

使用例: 開始日が2024年1月15日、終了日が2024年2月10日の場合は26を返します(1月15日から2月10日までの差ではなく、1月15日から1月31日までの差)。

=DATEDIF("2024-01-15", "2024-02-10", "MD")
"MD"単位の日数の差
3. “YD” – 年の日数差
  • 説明: “YD” は、開始日と終了日が属する年の日数の差を計算します。これは、年を超える部分を無視して、同じ年内での日数差を求める場合に使用します。
  • 使用ケース: このオプションは、年度内での休日数計算や、同じ年内でのプロジェクト日数の計算など、年をまたがない期間の日数差を知りたい場合に最適です。年度内の勤務日数計算や、特定の年度内での活動日数の差を求める際に便利です。

使用例: 開始日が2024年1月1日、終了日が2025年12月31日の場合は365を返します(閏年の場合は366)。

=DATEDIF("2024-01-01", "2025-12-31", "YD")
"YD"単位の日数の差

営業日数の差を求めたい場合は下記の関数が使用できます。詳しくは各記事をご確認ください。

週単位: 2つの日付を引き算して週の数の差を取得する方法

Excel の DATEDIF 関数には、週単位で日付の差を計算するための備え付けの値が用意されていないため、直接的なアプローチがありません。そのため、2つの日付の間に何週間あるかを調べるには、“D”単位で DATEDIF 関数を使用して日数の差を計算した後に、その結果を7で割ります

使用例:

開始日が2024年1月1日、終了日が2024年1月31日の場合は4.29を返します (30/7=4.2857…)。ここでは単純に日数を割るため整数とならないことに注意してください。

=DATEDIF("2024-01-01", "2024-1-31", "D")/7
週数の差 (切り捨てなし)

他の日数などと同様に整数で週単位の差を取得したい場合は、ROUNDDOWN関数を使用して小数点以下を切り捨てます。

使用例:

開始日が2024年1月1日、終了日が2024年1月31日の場合は4を返します。

=ROUNDDOWN(DATEDIF("2024-01-01", "2024-1-31", "D")/7, 0)
週数の差 (切り捨てあり)

ROUNDDOWN関数は数値を任意の桁区切りで切り捨てる関数です。詳しくはマイクロソフト公式ドキュメントを参照してください。

月単位: 2つの日付を引き算して月数の差を取得する方法

日数を数えるのと同様に、ExcelのDATEDIF関数は、指定した2つの日付間の月数の差を計算できます。ここでは、”M”または”YM”を使用することができます。それぞれの違いや使用するケースを下記でご紹介いたします。

1. “M” – 月数の差
  • 説明: “M”は2つの日付間の月数の差を計算します。この計算では、日付をもとに月単位での差が計算されます
  • 使用ケース: このオプションは、ある期間が全体として何ヶ月にまたがっているかを知りたい場合に使用します。例えば、貸付期間、プロジェクトの期間、あるイベントの準備期間など、月単位で期間を測定したい場合に適しています。

使用例:

開始日が2024年1月1日、終了日が2024年4月1日の場合は3を返します。

=DATEDIF("2024-01-01", "2024-04-01", "M")
"M"単位の月数の差
2. “YM” – 年を超えた月の差
  • 説明: “YM”は、2つの日付の間の月の差を計算しますが、年数は無視されます。同じ年の日付であるかのように各日付の差が月単位で計算されます。
  • 使用ケース: このオプションは、特定の活動やプロジェクトの年間サイクル内で、月のみを考慮したい場合に便利です。例えば、年次更新プロセス、誕生日や記念日からの月数計算、または年をまたいで同じ月に発生するイベントの準備期間を考える際などに使用されます。

使用例: 開始日が2024年1月1日、終了日が2025年4月1日の場合は3を返します。ここで、1年と3ヶ月の期間がありますが、”YM”オプションでは3ヶ月のみが計算されます。

=DATEDIF("2024-01-01", "2025-04-01", "YM")
"YM"単位の月数の差

補足: MONTH関数を使用して月数の差を取得する方法

MONTH関数を使用して日付から月数の差を計算するには、直接的な方法ではなく、いくつかのステップを踏む必要があります。MONTH関数は、指定された日付の月を1から12の数値で返します。
したがって、2つの日付間の月数の差を計算するためには、年と月の情報を組み合わせて計算を行う必要があります。

月数の差を計算する基本的なアプローチ:
  1. 年数の差を月数に変換: 2つの日付の年数の差を計算し、その差を月数に変換します。これは、(年数の差) * 12 という計算になります。
  2. 月数の差を計算: その後、開始日付と終了日付の月を直接比較し、その差を計算します。
  3. 最終的な月数の差を合算: 上記の2ステップから得られた月数を合算して、最終的な月数の差を得ます。
具体的な計算式の例:

開始日が 2024-01-15 (A1セルに入力) とし、終了日が 2025-04-10 (B1セルに入力) の場合の月数の差を計算する式は以下の通りです。

= (YEAR(B1) - YEAR(A1)) * 12 + (MONTH(B1) - MONTH(A1))

この計算では、まず2025年と2024年の年数の差を計算し、それを12倍して月数に変換します。次に、4月と1月の月数の差を計算します。これらの結果を合計して、最終的な月数の差を求めます。

  • この方法では、日付の日部分は考慮されません。つまり、月の変わり目に近い日付で計算しても、完全な月が経過していない場合でも月数の差に1ヶ月としてカウントされます。
  • 結果は、開始日と終了日の間に完全に経過した月の数を示します。これは、特定の日から次の月の同じ日に至るまでを1ヶ月と数える計算とは異なる場合があるため、計算の目的に応じて適切な方法を選択する必要があります。

年単位: 2つの日付を引き算して年数の差を取得する方法

最後に、日数や月数を数えるのと同様に、ExcelのDATEDIF関数で指定した2つの日付間の年数の差を計算する方法をご紹介します。ここでは、”Y”を第3引数に設定します。

  • 説明: “Y”は、2つの日付の間の年数の差を計算します。

使用例: 開始日が2024年1月1日、終了日が2025年4月1日の場合は1を返します。

=DATEDIF("2024-01-01", "2025-04-01", "Y")
年数の差

補足: YEAR関数を使用して年数の差を取得する方法

MONTH関数の際と同様に、YEAR関数を使用して2つの日付の年数の差を求める事ができます。YEAR関数は特定の日付から年のみを整数で抜き出す関数です。

年数の差を計算する基本的なアプローチ:
  1. 年数を抽出: 開始日付と終了日付の日付からYEAR関数で年を抜き出します
  2. 年数の差を計算: ステップ1で抜き出した年から、その差を計算します。
具体的な計算式の例:

開始日が 2024-01-15 (A1セルに入力) とし、終了日が 2025-04-10 (B1セルに入力) の場合の年数の差を計算する式は以下の通りです。計算結果として、1が出力されます。

=YEAR(B1) - YEAR(A1)
  • この方法では、日付の月や日部分は考慮されません。つまり、年の変わり目に近い日付で計算しても、完全な1年が経過していない場合でも年数の差に1年としてカウントされます。
  • 結果は、開始日と終了日の間に完全に経過した年数を示します。これは、特定の日から次の年の同じ日に至るまでを1年と数える計算とは異なる場合があるため、計算の目的に応じて適切な方法を選択する必要があります。

年、月、日をまとめて日付の差を計算する方法

ここまで紹介した方法を組み合わせることで、年・月・日をまとめて日付の差を計算することができます。具体的には”Y”、”YM”、”MD”を1つの数式内で使用して、単位を付けたら完成です。

使用例: 開始日が2024年1月1日、終了日が2025年4月10日の場合は1年3ヶ月9日が出力されます。

=DATEDIF("2024-01-01", "2025-04-10", "Y")&"年"&DATEDIF("2024-01-01", "2025-04-10", "YM")&"ヶ月"&DATEDIF("2024-01-01", "2025-04-10", "MD")&"日"

数式の変更箇所を1箇所にしたバージョンはこちら (startとendの直後の文字列を変更してください)

=LET(start, "2024-01-01", end, "2025-04-10", DATEDIF(start, end, "Y")&"年"&DATEDIF(start, end, "YM")&"ヶ月"&DATEDIF(start, end, "MD")&"日")
年月日で示す日付の差

おまけ: DATEDIF関数で年齢を自動計算する

今回使用した方法を応用して、DATEDIF関数で年齢を自動計算することができます。開始日に生年月日を使用し、終了日にTODAY関数を使用します。単位は”Y”としてください。

使用例: A2セルに1995年2月10日と入力されている場合、現在 (2024年2月14日) から年数の差である29が出力されます。

=DATEDIF(A2, TODAY(), "Y")
年齢の自動計算

まとめ

以上がDATEDIF関数を使用して、日数・週数・月数・年数などの単位で2つの日付を引き算して差を求める方法のご紹介です。

ご質問やご不明点がある場合はお気軽にコメントお待ちしております。

ご精読いただきありがとうございました。

コメント

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