8/05/2014

Excel。誕生日から満年齢を求めるのには、DATEDIF関数を使ってみる。


Excel。誕生日から満年齢を求めるのには、
DATEDIF関数を使ってみる。

DATEDIF関数


Excelで結構面倒なのが、日付関係の計算。
これは、Excelが1990/1/1を1として一日をプラス1ずつしていくシリアル値を使い、
表示形式で日付をコントロールしているからなのです。

そして、結構あちこちの現場とか、仕事でつかえるExcel講座などで、
教えてほしいとリクエストがあるのが、満年齢とかの、
満年を求める方法というのがありますので、
今回は、以前に紹介したことがあるDATEDIF関数を改めて、ご紹介します。

下記の表があります。
E3に満年齢を求めるとしたケースは、単純に、D3-C3という計算をしたとします。

その結果は、12543

誕生日から今日の日を引いたとしても、シリアル値になってしまい、
この期間の日数は算出することが出来ますが、年数はわかりません。
表示形式を日付にするとますます、訳が分からなくなってしましますし…

この12543を単純に365で割ればいいという話ではありませんね。うるう年の問題があります。

そこで、年齢や期間を求めるには、DATEDIF関数を使う方法が有名なので、
DATEDIF関数を紹介します。

このDATEDIF関数は、2つの日付間の日数、月数、年数を返しますが、
ちょっと困った関数なのです。DATEDIF関数は、
Lotus 1-2-3の関数との互換性を保つために導入された経緯があるために、
通常通りに関数の挿入ボタンをクリックして、
関数挿入ダイアログボックスからDATEDIF関数を見つけることができないのです。

DATEDIF関数は、【隠れている】のです。

では、
どうやって関数を作っていくのかというと…【手入力】でミスなく入力するという方法になります。

Microsoftさんも、そろそろ標準搭載にしてくれてもいいと思うのですがね…

それでは、E4に入力する数式は、
=DATEDIF(C4,D4,"Y")
となります。
引数。()の中は、開始日,終了日,算出する期間(単位)です。
単位には下記の種類があります。
"Y" 期間内の満年数
"M" 期間内の満月数
"D" 期間内の満日数
"MD" 開始日から終了日までの日数。この場合、月と年は考慮されません。
"YM" 開始日から終了日までの月数。この場合、日と年は考慮されません。
"YD" 開始日から終了日までの日数。この場合、年は考慮されません。

算出されて結果は34。

ということで、満34歳ということがわかりました。
今回は、今回は説明のために、D列に日付として、2014/5/5と入力しておりますが、
大体満年を算出する場合は、
誕生日とか入社日とか入会日から今日までというケースが主だと思われます。

その場合は、DATEDIF関数の終了日のところに、TODAY関数を使ってあげればいいですよね。

その場合の計算式は、
=DATEDIF(C4,TODAY(),"Y")
というDATEDIF関数で求めることができます。

余談ですが、E4をクリックした状態で、
fxボタンを押して、DATEDIF関数のダイアログボックスを表示してみましょう。

単に、ダイアログボックスが表示されただけで、ラベルもないので、
入力するボックスの意味もわかりませんね。


このDATEDIF関数。確かに便利ではありますが、隠れているうえに、
ダイアログボックスが使えないので、手入力で作るため、なかなか覚えているのが大変です。

そこで、次回は、DATEDIF関数ではなくて、ある関数を使うと、満年齢だけですが、
分かりやすく数式を作ることが出来るので、その関数。

YEARFRAC関数をご紹介したいと思います。