ADVERTISEMENT

【Googleスプレッドシート】DATEDIF関数で日付の差を計算!年・月・日単位の使い分け

【Googleスプレッドシート】DATEDIF関数で日付の差を計算!年・月・日単位の使い分け
🛡️ 超解決

日付の差を計算したい場面は、プロジェクトの経過日数や年齢の算出など、ビジネスやプライベートでよくあります。GoogleスプレッドシートにはDATEDIF関数という、2つの日付の差を年・月・日の単位で正確に計算できる便利な関数が用意されています。しかし、引数の指定方法や単位の文字に注意しないと、思わぬ誤差が生じることもあります。この記事では、DATEDIF関数の構文と各単位の使い分けを、具体例を交えて詳しく解説します。読み終える頃には、日付計算で迷うことがなくなるでしょう。

【要点】DATEDIF関数で日付差を正確に計算するコツ

  • 基本構文「=DATEDIF(開始日, 終了日, 単位)」: 3つの引数を指定するだけで、年・月・日単位の差を求められます。
  • 単位「Y」「M」「D」の正しい使い分け: 「Y」は完全な年数、「M」は完全な月数、「D」は丸ごとの日数を返します。
  • 「YM」「YD」「MD」を使った部分的な差の取得: 「YM」は年を除いた月数、「YD」は年を除いた日数、「MD」は月を除いた日数を計算します。

ADVERTISEMENT

DATEDIF関数の概要と計算の仕組み

DATEDIF関数は、Excelとの互換性のために用意された隠れた関数です。関数一覧には表示されませんが、正しく入力すれば使用できます。構文は=DATEDIF(開始日, 終了日, 単位)です。開始日と終了日は日付シリアル値または日付文字列で指定し、単位はダブルクォーテーションで囲んだ1文字または2文字のコードを入力します。終了日は開始日より後の日付でなければならず、過去の日付を指定するとエラーになります。単位の種類は6つあり、「Y」「M」「D」「YM」「YD」「MD」から選択します。これらの単位を適切に選ぶことで、例えば「満年齢」「経過月数」「残り日数」など、目的に応じた正確な数値を取得できます。

DATEDIF関数の基本構文と基本的な使い方

ここでは、実際にスプレッドシートでDATEDIF関数を使う手順を解説します。サンプルデータとして、セルA1に「2020/1/1」、セルB1に「2024/6/15」を入力した状態を想定します。

  1. DATEDIF関数を入力する
    結果を表示したいセルを選択し、「=DATEDIF(」と入力します。続いて開始日を指定するため、A1をクリックまたは「A1」と入力します。
  2. 終了日と単位を指定する
    カンマで区切り、終了日「B1」、カンマ、単位をダブルクォーテーションで囲んで入力します。例えば年数を求めるなら「”Y”」と入力し、閉じ括弧を付けてEnterキーを押します。
  3. 結果を確認する
    「=DATEDIF(A1,B1,”Y”)」と入力すると、4が返ります。これは2020年1月1日から2024年6月15日までの満年数が4年であることを意味します。

各単位の結果例をまとめます。

単位「Y」で経過年数を計算する

「=DATEDIF(A1,B1,”Y”)」は4を返します。開始日から終了日までの間に完全に経過した年数です。誕生日から今日までの満年齢を求めるときに最適です。

単位「M」で経過月数を計算する

「=DATEDIF(A1,B1,”M”)」は53です。2020年1月から2024年6月まで、満53か月が経過したことを示します。月単位の契約期間やローンの返済期間の計算に使えます。

単位「D」で経過日数を計算する

「=DATEDIF(A1,B1,”D”)」は1627日です。経過した丸ごとの日数です。単純な日数計算ならDAYS関数でも同じ値が得られますが、DATEDIFの利点は年・月・日を個別に取り出せる点にあります。

単位「YM」で年を除いた月数を計算する

「=DATEDIF(A1,B1,”YM”)」は5です。年数を除いた残りの月数で、4年と5か月という意味です。年齢計算で「○歳○か月」と表示したいときに活用します。

単位「YD」で年を除いた日数を計算する

「=DATEDIF(A1,B1,”YD”)」は166です。年数を除いた日数で、4年と166日という意味です。特定の日から次の誕生日までの日数を調べるのに便利です。

単位「MD」で月を除いた日数を計算する

「=DATEDIF(A1,B1,”MD”)」は14です。月数を除いた日数で、53か月と14日という意味です。「○か月と○日」という表現が必要な場合に使います。

DATEDIF関数を使う際の注意点とよくあるミス

DATEDIF関数にはいくつかの落とし穴があります。ここでは代表的な注意点を解説します。

終了日が開始日より前の場合はエラーになる

DATEDIF関数は終了日が開始日より前だと「#NUM!」エラーを返します。日付の大小を間違えないように注意してください。もし前後が不明な場合は、IF関数で大小を判定してから使うと安全です。

日付が文字列として入力されていると正しく計算されない

日付が文字列として保存されている場合、DATEDIF関数はエラーになるか、誤った値を返します。セルの表示形式が「日付」になっているか確認し、文字列の場合はDATEVALUE関数でシリアル値に変換してから使いましょう。

「MD」単位では月末日の扱いに注意する

「MD」は月を除いた日数を返しますが、開始日の日が終了日の日より大きい場合、結果が直感的でないことがあります。例えば開始日が1月31日、終了日が2月28日(うるう年以外)の場合、「MD」は-3ではなく0を返します。これはDATEDIFが月の境界を超えないように調整するためです。こうした動作を知っておかないと、予想外の結果になることがあります。

関数のオートコンプリートに表示されない

DATEDIF関数はスプレッドシートの関数候補に表示されません。そのため、手入力で「=DATEDIF」と正確にタイプする必要があります。間違えてスペルを「DATEDIFF」などとするとエラーになりますので、正しく入力してください。

ADVERTISEMENT

DATEDIF関数と他の日付関数の比較表

日付差を計算する関数にはDATEDIFの他にDAYS、DAYS360、YEARFRACなどがあります。以下の表で主な違いを確認しましょう。

関数名 返す値 特徴
DATEDIF 年・月・日を個別に指定 単位を自由に選べる。年数・月数・日数を別々に取得可能
DAYS 日数のみ シンプルで引数の順序に注意。終了日-開始日
DAYS360 360日ベースの日数 金融計算で使われる。月を30日とみなす
YEARFRAC 年数の小数 1年未満の端数を小数点で表す。年率計算に便利

まとめ

DATEDIF関数を使うと、開始日と終了日の差を年・月・日単位で柔軟に計算できます。単位「Y」「M」「D」で全体の差を、「YM」「YD」「MD」で部分的な差を取得できるのが最大のメリットです。終了日が開始日より前にならないよう注意し、日付は必ず日付形式で入力しましょう。応用として、年齢を「○歳○か月○日」と表示したい場合は、各単位を組み合わせて「=DATEDIF(生年月日,TODAY(),”Y”) & “歳” & DATEDIF(生年月日,TODAY(),”YM”) & “か月” & DATEDIF(生年月日,TODAY(),”MD”) & “日”」のように連結すると便利です。ぜひ日付計算の必要が生じたときは、DATEDIF関数を試してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。