【初心者向け】エクセルで年齢を計算する方法
エクセルで年齢を計算したいときの、計算方法を解説していきます。
年齢を計算する方法には、大きく分けて次の2つがあります。
- 誕生日当日に年齢を1増やす計算方法
- 誕生日の前日に年齢を1増やす計算方法
例えば、1976年7月1日生まれの人が、2016年6月30日の時点で何歳かを計算したいという場合、
誕生日当日に年齢を1増やす計算方法 | 39歳 |
---|---|
誕生日前日に年齢を1増やす計算方法 | 40歳 |
というように年齢が1歳変わってきてしまいます。
会社の仕事として年齢計算をする場合には、後者の「誕生日の前日に年齢を1増やす」計算のほうが多いと思うのですが、目的により異なる可能性があります。
ですから、計算式を組む前に、このどちらの計算をすべきか念入りに確認してください。
このページでは「datedif関数」を使う方法と使わない方法の2パターンの説明をしています。
datedif関数を使うと、計算式は非常に簡単になります。
ただし、
- 過去datedif関数は様々なバグを出していること
- 計算過程が見えているほうがトラブルに対応しやすい
など、datedif関数を使うには不安な面もあります。
そのため、このページではdatedif関数を使わないで年齢計算をする計算式も紹介します。
個人的にはdatedif関数を使わない計算方法をおすすめします。
この記事の目次
前提
全ての例について、次のセルにデータが入っているものとして、C2セルに年齢を表示させます。
A2セル | 誕生日の日付 |
---|---|
B2セル | 年齢を計算したい時点の日付 |
誕生日当日に年齢を1増やす計算方法で、年齢を求める
まずは、計算が簡単な「誕生日当日に年齢を1増やす」方法を解説していきます。
なお、「2/29生まれ」の人については、
「年齢を計算したい時点」がうるう年の場合 | 「2/29」時点で年齢が1増える |
---|---|
「年齢を計算したい時点」がうるう年でない場合 | 「3/1」時点で年齢が1増える |
という計算をしています。
datedif関数を使って年齢を計算する方法
datedif関数を使う場合には、次のようにして計算を行います。
datedif関数を使わない方法
datedif関数を使わない場合には、年齢を、次の計算式で計算できます。
考え方ですが、
- 1.「大雑把に」年齢を計算する
-
最初の「year(B2)-year(A2)」の部分で、大雑把な年齢を計算しています。
例えば、1976年7月1日生まれの人が2016年6月30日の時点で何歳かを計算したいという場合。
とりあえず「年」同士を引き算をして(2016-1976=40)、大雑把な「年齢」を計算します。
- 2.誕生日の月・日と、年齢を計算したい時点の「月・日」の大小関係を見る
-
先ほどの大雑把な「年齢」計算でも、すでに今年の誕生日が到来していれば問題ありません。
ただ、「年齢を計算したい時点」で、今年の誕生日がまだ来ていない場合には計算結果がおかしくなります。
例えば、誕生日が7月1日だとすると、次のような補正が必要になります。
年齢を計算したい時点の日付が「7月1日」以降 補正なしでOK(=40歳のままでOK) 年齢を計算したい時点の日付が「6月30日」以前 補正が必要(=40歳から1を引いて39歳にしないといけない) そこで、月・日を比較して、すでに誕生日が到来しているかどうかの判断が必要となります。
- 3.月・日の大小関係を見るために「指標」を作る
-
月・日の比較には、いろいろな方法が考えられるのですが、今回は「月×100+日付」という指標を作って、その数値の大小比較をしています。
具体的には、次のような感じです。
1/1 → 101(=1×100+1) 6/30 → 630(=6×100+30) 7/1 → 701(=7×100+1) 12/31 → 1231(=12×100+31) このようにして指標を作ると、
誕生日が到来していない場合には「年齢を計算したい時点の指標<誕生日の指標」となっていることがわかります。
そして、この場合にだけ、大雑把な年齢から「1」を引けばいいわけです。
これを計算式化すると、先ほどご紹介した計算式になります。
※今回の記事を書くにあたってはインストラクターのネタ帳「DATEDIF関数を使わずに年齢を計算する」さんのサイトを参考にさせて頂きました。ありがとうございます!
誕生日前日に年齢を1増やす計算方法で、年齢を求める
法律的な年齢を計算する場合には、こちらの計算を行います。
たとえば、介護保険料は40歳から支払わないといけません。
この40歳になったかどうかの計算は、誕生日前日に年齢を1増やす方法で計算をすることになります。
datedif関数を使って年齢を計算する方法
datedif関数を使う場合には、次のようにして計算を行います。
誕生日前日に年齢が増えるように、datedif関数に入れる「年齢を計算したい時点」の日付を1日ずらすことで調整をしています。
※上記計算式を「=datedif(A2-1,B2,"Y")」というように「誕生日」の日付を1日ずらしてしまうと正しい結果が出ない場合があります。
(うるう年の3/1誕生日~うるう年でない年の2/28時点での年齢を求めるというパターンで不具合が出ます。)
細かいですが、ご注意ください。
datedif関数を使わない方法
今回の場合だと、
で計算できます。
考え方は、datedif関数を使わず、誕生日当日に年齢を1増やす計算方法で年齢を求める計算式とまったく同じです。
そして、誕生日前日に年齢が増えるように「年齢を計算したい時点」の日付を1ずらす「補正」をして計算式を作っています。