エクセルでDATEDIF関数が使えない時の対処法を解説します。
DATEDIF関数を使用した時の計算結果がおかしい場合や関数が使用不可能な時に考えられる主な原因、そして解決できない時の代替関数も併せて紹介しています。
DATEDIF関数が適用できなくて困っている場合は、ぜひこの記事を参考にしながら対応してみてください。
目次
DATEDIF関数とは【おさらい】
エクセルのDATEDIF関数とは、2つの日付のシリアル値から期間を求めてその間の年数や月数、日数を求めることができる関数です。
例えば開始日に生年月日を指定し、本日の日付を終了日に指定すれば現時点での年齢を求めることができます。求めた期間は「年」、「月」、「日」単位での表示することが可能であり、さまざまなビジネスシーンで活用されます。
DATEDIF関数が使えないバージョン
DATEDIF関数は、Excel 2010以前のバージョンでは使用することができません。また、日付の形式がDATEDIF関数で認識できない形式の場合なども関数が機能しないことがあります。
そのような場合は、四則演算を使って2つの日付の期間を求めることも可能です。例えばセルA2に開始日(2025/3/1)、セルB2に終了日(2025/3/5)を入力して「=B2-A2」とすれば2つの日付の間の日数を計算することができます。
日数を適切な値で割ることで、期間を月や年に変換することも可能です。またDATEDIF関数以外の関数を用いて簡便に計算する方法もあり、詳細は後述します。
DATEDIF関数が使えない?計算結果がおかしい場合の対応方法
DATEDIF関数が使えない、計算結果がおかしいと感じた場合の対処法を解説します。よくある間違いを紹介していきますので、当てはまるケースがないか確認してみてください。
- 詳細設定の「1904年から計算」にチェックを入れる
- DATEDIF関数の書式や単位が間違っていないか確認する
- 開始日と終了日の設定順序が間違っていないか確認する
- DATEDIF関数は入力のサジェストに表示されない
詳細設定の「1904年から計算」にチェックを入れる
まず、日付システムが正しく設定されているか確認しましょう。エクセルには「1900年」と「1904年」の日付システムがあります。これはエクセルが日付や時間を管理する「シリアル値」の開始日を変更するためのオプションです。
DATEDIF関数を使用するには「1904年」の日付システムに設定する必要があります。設定がうまく行われていないと正しい結果がでないので、確認する手順をみていきましょう。
まず「ファイル」タブを左クリックして、メニューから「オプション」を選択します。
オプション画面が開いたら、左画面にある「詳細設定」を選んでください。右画面の「次のブックを計算するとき(H)」と書かれた箇所の「1904年から計算する(Y)」の項目を確認しましょう。チェックが入っていなければチェックを入れてOKボタンを押してください。
以上で設定は完了です。
DATEDIF関数の書式や単位が間違っていないか確認する
先ほど解説した日付システムが正しく設定されている場合、基本的なDATEDIF関数の書式や単位が間違っていないか確認してみましょう。
DATEDIF関数の書式は「=DATEDIF(開始日,終了日,単位)」で引数は3つあります。
第3引数の単位の指定の仕方も決まりがありますので、正しく書けているか下の表を見ながら確認してみてください。
■例
・開始日:2010/1/1
・終了日:2020/12/1
単位 | 書式 | 結果 | 説明 |
---|---|---|---|
年数:Y | =DATEDIF(開始日,終了日,”Y”) | 10 | 開始日から終了日までの年数を計算 |
月数:M | =DATEDIF(開始日,終了日,”M”) | 131 | 開始日から終了日までの月数を計算 |
日数:D | =DATEDIF(開始日,終了日,”D”) | 4017 | 開始日から終了日までの日数を計算 |
月数のみ:YM ※0〜11の範囲 |
=DATEDIF(開始日,終了日,”YM”) | 11 | (年数を無視して)月数のみ計算 |
日数のみ:YD ※0〜365の範囲 |
=DATEDIF(開始日,終了日,”YD”) | 364 | (年数を無視して)日数のみ計算 |
日数のみ:MD ※0〜30の範囲 |
=DATEDIF(開始日,終了日,”MD”) | 30 | (年数と月数を無視して)日数のみ計算 |
開始日と終了日の設定順序が間違っていないか確認する
よくあるのが、開始日と終了日の設定順序が逆になっている誤りです。反対に設定してしまうと、経過期間がマイナスになってしまうので「#NUM!」エラーが表示されてしまいます。
DATEDIF関数は入力のサジェストに表示されない
実はDATEDIF関数は公式ではサポートされていない関数で、関数候補(入力のサジェスト)に関数名が出てきません。
特にDATEDIFはDATEIFなどと間違えやすいので、関数を入力する時はスペルをしっかり確認しながら入力しましょう。
DATEDIF関数が使えない場合に代わる関数
DATEDIF関数が使えない場合に代わる関数を3つ紹介します。
- ROUNDDOWN関数で年齢を計算する
- YEARFRAC関数で年数を計算する
- DAYS関数で日数を計算する
ROUNDDOWN関数で年齢を計算する
まず初めにROUNDDOWN関数を使って年齢を計算する方法を紹介します。ここで紹介する方法は、1日単位で正確な年齢を計算することを保証するものではありませんのでご注意ください。
現在の年齢を計算してみましょう。A2セルに生年月日、B2セルに本日の日付を入力します。
A2セルとB2セルの差分を求めてみましょう。C2セルに「=B2-A2」と入力します。
これで生まれた日から今日までの経過日数が計算されます。こちらを年齢(年表示)に直すために365で割ります。
最後に出てきた値をROUNDDOWN関数を使って整数に整えます。ROUNDDOWN関数は数値を指定した桁数で切り捨てる関数で「=ROUNDDOWN((B2-A2)/365,0)」と入力しましょう。
これで現在の年齢を求めることができました。
うるう年などによっては正確な年齢がでない場合もあります。大まかな年齢を知りたい時に使うようにしましょう。
参考:ROUNDDOWN関数の使い方|小数点以下を切り捨てる方法
YEARFRAC関数で年数を計算する
次はYEARFRAC 関数を使用して、2 つの日付の間の期間を年単位で計算してみましょう。YEARFRAC関数は指定した開始日から終了日までの期間が1年間に占める割合を求める関数です。
先ほど紹介した方法では手動で開始日と終了日の差を求めたり365日で割ったりしなければなりませんでしたが、こちらの関数を使用すれば自動で開始日と終了日の期間を年数換算してくれます。
こちらでも例として、現在の年齢を計算してみましょう。A2セルに生年月日、B2セルに本日の日付を入力します。
次に関数を入力していきます。YEARFRAC 関数の書式は「=YEARFRAC(開始日,終了日,基準)」となっておりDATEDIF関数と似ています。
例では「=YEARFRAC(A2,B2,1)」と入力します。第3引数は計算の際に使われる基準日数で、ここでは1年を365日(うるう年は366日)で計算したいので「1」を指定しています。
関数を入力し終えたら「Enter」キーを押しましょう。場合によっては小数表示されますので、先ほど紹介したROUNDDOWN関数で端数を切り捨てます。
関数を「=ROUNDDOWN(YEARFRAC(A2,B2,1),0)」と書き換えましょう。これで2つの日付の期間を年数で表示することができました。
DAYS関数で日数を計算する
最後にDAYS関数を使って2つの日付の期間の日数を計算する方法を解説します。DAYS関数は2つの日付間の日数を計算する数式で、書式は「=DAYS(終了日,開始日)」となります。
DATEDIF関数やYEARFRAC 関数と違って第1引数が「終了日」で第2引数が「開始日」となっていることに注意しましょう。
ここでは業務の締切日を終了日、現在の日付を開始日に指定して締切までの日数をカウントダウンしてみましょう。
A2セルに本日の日付、B2セルに締め切りの日付を入力します。
日数を表示させたいセルに「=DAYS(B2,A2)」と入力します。開始日と終了日を指定する引数を間違えないようにしてください。
関数を入力し終えたら「Enter」キーを押しましょう。これで2つの日付の期間を日数で表示することができました。
DATEDIF関数が使えない理由をおさらい
DATEDIF関数は公式にサポートされた関数ではないため、入力予測に出てこなかったり古いエクセルのバージョンでは使用できないことがあります。
DATEDIF関数が使えない場合、代替として使用できる関数には次のようなものがありました。
- ROUNDDOWN関数
- YEARFRAC関数
- DAYS関数
ぜひこれらの関数も使えるよう練習してみてください。
今話題のリスキリングは手元から!
リテラアップアプリのご利用について、法人の方は下記フォームよりお問い合わせください。
(Excel,WordなどOffice製品やPC関連の技術的な質問にはお答えできかねます。ご了承ご了承ください。)