STUDY387

エクセルで仕事をもっと簡単にしよう

【エクセル関数】年数・月数・日数などの期間を計算するDATEDIF

time 2014/07/28

【エクセル関数】年数・月数・日数などの期間を計算するDATEDIF
※ エクセル2013で説明しています。

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

  • 第1引数:開始日(必須)。期間の開始日を指定。
  • 第2引数:終了日(必須)。期間の終了日を指定。
  • 第3引数:単位(必須)。期間の単位を指定。単位の種類は以下の表のとおり。
単位 意味 
"Y" 満年数 
"M"  満月数 
"D" 総日数
"YM" 1年未満の月数
"YD" 1年未満の日数
"MD" 1か月未満の日数

指定した開始日から終了日までの期間を調べます。

使い方

DATEDIF関数は指定した開始日から終了日までの期間を調べてくれます。
単位の指定により、年数、月数、日数のどれでも調べることができます。

期間の計算に重宝するDATEDIF関数ですが、
エクセルの関数ライブラリには登録されてない、非公開の関数です。
そのため、式を手入力しなくてはなりません。

そして、バグがあります!
単位にYMとMDを指定すると、そのバグが起こる可能性があります。

マイクロソフトによるDATEDIF関数のバグの説明
http://support.microsoft.com/kb/2678753/ja

しかし、他の単位でも閏年が関係する(特に2月29日を開始日等に指定する)とバグが発生するようで、十分に注意する必要があります。
バグについては以下の記事に詳しくまとまっています。

No.50 DATEDIFの謎を追え(1) ~ DATEDIF関数の真実
http://www.niji.or.jp/home/toru/notes/50.html

以上をご理解の上、それでもDATEDIF関数を使いたい!という方に、
使い方を説明します。

◆年数の計算
2014年1月1日から2015年1月1日までの期間を計算します。年数で表示したいので、単位にYを使います。式は「=DATEDIF("2014/1/1","2015/1/1","Y")」です。下の表はセル番地を使用しているので、「=DATEDIF(A3,B3,C3)」になっています。結果は1になります。使い方は簡単ですね。
excel-datedif01

次にDATEDIF関数の特徴を知るために、2014年1月1日から2014年12月31日の期間を計算します。この結果は0になります。
excel-datedif02

つまり、DATEDIF関数では、1年後の同月同日にならないと満1年と計算されません
もし、後者の例で満一年と計算させたい場合は、終了日に1を足し算しましょう。
式は「=DATEDIF("2014/1/1","2014/12/31"+1,"Y")」になります。
excel-datedif03

◆月数の計算
月数で期間を計算するときは、単位に"M"を使います。
2014年1月1日から2014年12月31日までの満月数を計算する式は、
=DATEDIF("2014/1/1","2014/12/31","M")」です。
結果は11です。もし、この結果を12にしたい場合は、終了日に1を足してください。
excel-datedif04

◆日数の計算
日数で期間を計算する場合は、単位に"D"を使います。
2014年1月1日から2014年12月31日までの満月数を計算する式は、
=DATEDIF("2014/1/1","2014/12/31","D")」です。
結果は364です。もし、この結果を365にしたい場合は、終了日に1を足してください。
excel-datedif05

◆満年数未満の月数の計算
満年数に満たない月数を計算する場合、単位に"YM"を使います。
2014年1月1日から2015年3月31日までの満年数に満たない月数を計算する式は、
=DATEDIF("2014/1/1","2015/3/31","YM")」です。
結果は2です。もし、この結果を3にしたい場合は、終了日に1を足してください。
excel-datedif06

◆満年数未満の日数の計算
満年数に満たない日数を計算する場合、単位に"YD"を使います。
2014年1月1日から2015年1月31日までの満年数に満たない日数を計算する式は、
=DATEDIF("2014/1/1","2015/1/31","YD")」です。
結果は30です。もし、この結果を31にしたい場合は、終了日に1を足してください。
excel-datedif07

◆満月数未満の日数の計算
満月数に満たない日数を計算する場合、単位に"MD"を使います。
2014年1月1日から2015年1月31日までの満月数に満たない日数を計算する式は、
=DATEDIF("2014/1/1","2015/1/31","MD")」です。
結果は30です。もし、この結果を0にしたい場合は、終了日に1を足してください。
excel-datedif08

以上がDATEDIF関数の使い方でした。
バグがあるものの、期間の計算には便利な関数です。
注意点を理解して使ってくださいね。

なお、DATEDIF関数を使わずに計算する方法を
紹介したサイトがあります。
こちらも参考にすることをお勧めします。

Excel一般機能:DATEDIF関数のバグ対策
http://www.geocities.jp/chiquilin_site/data/100509_datedif.html

sponsored link



sponsored link

sponsored link

何はともあれOFFICEのことならマイクロソフト。意外とキャンペーンやっています。

コピー用紙あったかな?トナーもあったかな?事務用品はアクスルへGO!