日付の差を計算したい場面は、プロジェクトの経過日数や年齢の算出など、ビジネスやプライベートでよくあります。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」を入力した状態を想定します。
- DATEDIF関数を入力する
結果を表示したいセルを選択し、「=DATEDIF(」と入力します。続いて開始日を指定するため、A1をクリックまたは「A1」と入力します。 - 終了日と単位を指定する
カンマで区切り、終了日「B1」、カンマ、単位をダブルクォーテーションで囲んで入力します。例えば年数を求めるなら「”Y”」と入力し、閉じ括弧を付けてEnterキーを押します。 - 結果を確認する
「=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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
