エクセルで生年月日から年齢を自動計算する方法。和暦も計算OK!

エクセルで生年月日から年齢を自動計算する方法。和暦も計算OK! Excel使いこなし(ステップアップ編)

エクセルでは日付を扱うことが非常に多いですが、その中でも『生年月日』という日付はよく出てきます。

よくあるのが、『生年月日』から『年齢』を計算したり、『入社日』から『勤続年数』を計算したりというもの。

今回は、『生年月日』から『年齢』の自動計算や、『入社日』から『勤続年数』の自動計算をする方法を紹介します。

ようは、『経過年数』を計算する方法です。

エクセルで生年月日から年齢を自動計算する方法。(西暦編)

DATEDIF関数

  • 経過年数、経過月数、経過日数を取得するのはDATEDIF関数
  • 引数は、開始日、終了日、経過を表す単位(年、月、日)

年齢を計算するためには、DATEDIF関数を使います。

まずは、西暦になっている『生年月日』から『年齢』を自動で計算する方法。

 

下のように西暦の生年月日が入力されている表を使って、『年齢』を表示させてみます。

 

『年齢』の列(E3)に、『=DATEDIF(D3, TODAY(), “Y”)』を入力すると、自動計算された『年齢』が表示されます。

DATEDIF関数の第一引数に開始日となるセルの位置(D3)第二引数に終了日となる今日の日付のTODAY()、第三引数には経過を表す単位の年(”Y”)を指定しています。

これで、DATEDIF関数によって『生まれた日から今日の日付までの経過年数』が自動で計算されるわけです。

 

ちなみに、『TODAY()関数』は今日の日付を返す関数で、エクセルをいつ開いても今日の日付を返します。

つまり、TODAY()関数を終了日に指定すると、常に最新の年齢が計算されるということ。

年が変わっても年齢の再計算が必要ないので、年齢の計算ではTODAY()を使うことをおすすめします。

 

では、手順の方に戻って、一人の『年齢』がDATEDIF関数で求まったので、他の人の『年齢』も計算されるように、入力済のDATEDIF関数をコピーしていきます。

 

DATEDIF関数を入力したセルを選択し、右下のフィルハンドルのところでマウスをダブルクリックします。

マウスが十字の形に変わったら、ダブルクリックで『フィルコピー』とよばれるコピーができます。

 

全員のコピーができると、このように年齢が自動で計算されます。

終了日を固定位置のセルにする場合のDATEDIF関数の書き方

さきほどは、終了日の引数にはTODAY()関数を直接指定しました。

固定位置のセルに入力された終了日を使いたい場合は、終了日の指定を気をつける必要があります。

 

下の表では、固定位置のセルはC2で、ここにTODAY関数で今日の日付が入力されています。

この場合のDATEDIF関数の書き方は、下の画像の通りです。

 

『=DATEDIF(D3, TODAY(), “Y”)』と書いていたのが、『=DATEDIF(D3, $C$2, “Y”)』のように変わります。

 

C2は固定セルの今日の日付が入力されている位置をあらわしますが、C2ではなく“$”を列と行の”C”と”2”の前につけて『$C$2』と書くと、それは絶対アドレス(参照)となります。

エクセルはアドレス(参照先)が入力されている関数や数式を他のセルにコピーする場合、そのセルにあうようにアドレス(参照先)を自動で変更してくれます。

 

普通は、エクセルにそのまままかせればいいんですが、今日の日付を固定した場合、エクセルによって今日の日付の位置が変更されるために、正しくDATEDIF関数が処理されないわけです。

固定の場合は変更されると困るので、固定位置は相対アドレス(参照)ではなく絶対アドレス(参照)を指定する必要があります。

※絶対アドレスにするとエクセルは変更しません。

 

今日の日付けを絶対アドレス(参照)にすることで、他の人にも正しくコピーされるようになります。

エクセルで生年月日から年齢を自動計算する方法。(和暦編)

続いては、『生年月日』が和暦の日付だった場合の方法。

和暦の日付は一旦西暦に変換する必要がありそうですが、和暦のままでもDATEDIF関数は正しく処理してくれます。

なので、和暦だからといって特別なことをする必要はありません。

 

西暦と全く同じようにDATEDIF関数を書けば、このように『年齢』が求まります。

 

しかも、和暦の日付が『日付形式』ではなく『文字列』でもDATEDIF関数は問題なく処理してくれます。

 

和暦で日付を入力した場合は、自動で『日付形式』で入力されます。

↓こんな感じですね。

 

でも、『日付形式』ではなく、『文字列』で入力されていても、DATEDIF関数はきちんと処理してくれます。

DATEDIF関数は、かなりかしこい関数だと思いますね^^

DATEDIF関数で入社日から勤続年数を自動計算する

続いては、開始日に入社日を、終了日に今日の日付けを指定して勤続年数を求める方法。

これも紹介してきた『年齢』を求める方法と同じ、開始日が『生年月日』から『入社日』に変わっただけです。

DATEDIF関数で入社日から経過月数、経過日数を自動計算する

今までは『経過年数』を求める方法でしたが、『経過した月数』と『経過した日数』を求める方法も紹介します。

『経過年数』と『経過月数』を求める

次のように入力すると、『経過年数』+『最後の年の経過月数』が求まります。

『=DATEDIF(D3, TODAY(), “Y”) & “才” & DATEDIF(E3, TODAY(), “YM”) & “ヶ月”』

二番目のDATEDIF関数で指定している第三引数の『YM』が、最後の年の経過月数の指定です。

『経過年数』と『経過日数』を求める

同じように、第三引数に『YD』を指定すると『経過日数』が求まります。

 

『=DATEDIF(D3, TODAY(), “Y”) & “才” & DATEDIF(E3, TODAY(), “YD”) & “日”』

エクセルで生年月日から年齢を自動計算する方法のまとめ

まとめ

  • 基準となる日付けから経過した年数、月数、日数を取得するのはDATEDIF関数
  • 日付けは西暦、和暦を問わない

経過した『年数』、『月数』、『日数』を求めたい場合はエクセルでもよくあります。

年齢、勤続年数、契約年数や、作業期間(月数、日数)を求めたり、納期までの残り日数を求めたりというように、日付けを適切に処理できることが必要になることも多いです。

今回紹介したDATEDIF関数は、『業務で使える関数』なので、ぜひ使いこなせるようにしてください。