概要
生年月日から年齢を求めることって、顧客データの管理などをしていると結構多いと思います。
年齢をしりたい!と思うたびに、インターネットで早見表などから毎回調べていては、きりがないですよね?
また、勤続年数を何年何か月何日という単位で求めたいときも、多々あると思います。
今回は、生年月日を入力すれば自動的に年齢を算出し、入社年月日を入力すれば勤続年数を自動的に算出する関数をご紹介します。
また、この方法は役職滞留年数や会員年数などの算出にも応用できますので、ぜひ最後までご一読ください。
【DATEDIF関数】生年月日から年齢を求める方法
今回の目標としては、上の画像のように、生年月日を入力するとその横の年齢列が自動的に入ってくれるという状態にすることです。
今回使う関数は、2つあります。
1,DATEDIF関数
論理式はDATEDIF(開始日,終了日,単位)になります。
DATEDIF関数は、開始日と終了日の間にどれくらいの単位の期間(日数)があるのかを表示します。
例えば、DATEDIF(2022/1/3,2022/9/13,”Y”)だと、2022/1/3と2022/9/13の間に何年(YはYEARを表す)の期間があるかを表示します。
この場合ですと、0年ですので、「0」と表示されます。
DATEDIF(2022/1/3,2022/9/13,”M”)の場合ですと、2022/1/3と2022/9/13の間に何か月(MはMONTHを表す)の期間があるかを表示します。
この場合ですと、8か月間ありますので、「8」と表示されます。
2,TODAY()
TODAY()関数は、本日の日付を表示してくれます。
ですので、セルに「=TODAY()」と入力すると2022/9/13(記事執筆日)が表示されます。
この二つの関数を使うのですが、
まずは、年齢を表示したい場所にDATEDIF関数を書いていきます。
※DATEDIF関数は予測表示されないのでご注意ください。全て正確に描く必要があります。
=DATEDIF(D3,TODAY(),”Y”)
今回の上記のDATEDIF関数の場合は、
開始日→生年月日のセル
終了日→TODAY関数(本日の日付を常に取得する)
単位→”Y”(年齢は1年単位で増えていくからです)
をそれぞれ記載します。
そして、フラッシュフィルを下にすると、全ての年齢が瞬時に算出されます。
この方法は、役職滞留年数や会員年数などにも応用することができ、
役職滞留年数の場合は、生年月日の部分に役職昇格日を入れるだけです。
会員年数についても、上記の生年月日の部分に会員加入日を入れるだけです。
【DATEDIF関数応用編】勤続年月日を自動算出する
今回の目標としては、上の図のように、入社日から勤続年数を自動的に〇年〇ヶ月〇日という単位で算出することになります。
このようにするためには、DATEDIF関数関数をもう少し深くご紹介する必要があります。
DATEDIF(開始日,終了日,単位)
DATEDIF関数は上記の式であり、開始日と終了日の間を単位で表すというものでした。
では、開始日と終了日の間の〇年〇ヶ月の〇ヶ月の部分を知りたい場合はどうすればよいのでしょうか?
例えば、開始日が2008年3月9日で終了日が2022年9月15日の場合は、単位を”Y”にすると、「14」と表示され、”M”にすると「174」と表示されます。
では、14年6か月間にあるのですが、その6か月の「6」を表示するにはどうすればよいのでしょうか?
答えは、単位の部分を”YM”にします。
ですのでこの場合は、
DATEDIF(2008/3/8,2022/9/15,”YM”)
上記のように記載すると、開始日と終了日の間の14年6か月の〇ヶ月の部分、「6」が表示されます。
同じように、
DATEDIF(2008/3/8,2022/9/15,”MD”)
とすると、開始日と終了日の間の14年6ヶ月7日の〇日の部分、「7」が表示されるようになります。
これを利用して、勤続年月日を自動算出しましょう。
〇年〇ヶ月〇日と表示したい場合は、それぞれをDATEDIF関数で表示して「&」でつなぎます。
今回の場合ですと、
=DATEDIF(C2,TODAY(),”Y”)&”年”&DATEDIF(C2,TODAY(),”YM”)&”ヶ月”&DATEDIF(C2,TODAY(),”MD”)&”日”
このような関数になります。
DATEDIF(C2,TODAY(),”Y”)
→これば〇年を表示するための関数
DATEDIF(C2,TODAY(),”YM”)
→これが〇ヶ月を表示する関数
DATEDIF(C2,TODAY(),”MD”)
→これが〇日を表示する関数になります。
そしてこの3つを「&」でつなげて、「年」・「ヶ月」・「日」をそれぞれ間に記載すると関数は完成です。
最後にフラッシュフィルすれば完璧です。
いかがでしたでしょうか。
DATEDIF関数はあまり有名ではない関数ですので、元々知っていたという方は少ないかと思います。
知っていると結構使える関数ですので、これを機に覚えて頂けると嬉しいです。