Excelで年齢計算をする方法3選!DATEDIF関数なし版も!

Excelで年齢計算をする方法3選!DATEDIF関数なし版も!
Excelで生年月日から年齢を計算したいときはないでしょうか。

けど、そんな中で悩むことは、

・生年月日はあるのに、年齢を出す方法がわからない
・DATEDIF関数を使いたいのに、関数候補に出てこない
・誕生日がまだ来ていない人を、1歳多く数えてしまう

ですよね。

今回はそんなお悩みを解決する

・Excelで年齢を計算する方法3選(DATEDIF/YEAR補正/YEARFRAC)

についてまとめます!

完成イメージ

生年月日から年齢を出したいときは、今日(TODAY関数)と生年月日の差を取れば求められます。
今回は
・生年月日を入れるだけで、満年齢が自動で出る方法3選
をゴールにします。
3つとも同じ満年齢になりますが、数式の書き方と向いている場面が少しずつ違います。

なお、3つの方法の使い分け(比較表)や、うまくいかないときの対処法(トラブルシュート)もあわせてご紹介します。
早速実装して試してみましょう!
完成イメージ
上の画像が完成形です。生年月日(B列)を入れるだけで、満年齢が自動で計算されます。誕生日を迎えると自動で1つ増えます。

STEP1. 元データを用意する

まずは年齢を出したい名簿を用意します。
A列が氏名、B列が生年月日です。
生年月日は「1985/5/20」のようにスラッシュ区切りで入力すると、Excelが日付として認識してくれます。
C列からE列に満年齢(3つの方法)、F列に数え年を入れていきます。
今回は10人分で、誕生日が今年すでに来ている人と、まだ来ていない人を混ぜています。
年齢を出す前の名簿

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。

氏名 生年月日 満年齢
DATEDIF
満年齢
YEAR補正
満年齢
YEARFRAC
数え年
佐藤 花子 1985/5/20
鈴木 一郎 2000/1/1
高橋 美咲 1990/12/31
田中 健太 1978/8/15
伊藤 さくら 2003/4/1
渡辺 大輔 1995/10/10
山本 由美 1988/2/28
中村 翔太 2001/6/30
小林 あゆみ 1992/11/5
加藤 拓也 1999/3/25

※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。

方法① DATEDIF関数で満年齢を出す

もっともカンタンなのが、DATEDIF関数を使う方法です。
C2セルに =DATEDIF(B2,TODAY(),”Y”) と入力します。
開始日が生年月日、終了日が今日(TODAY())、最後の “Y” が「満年数」を表します。
C11セルまでコピーすれば、全員の満年齢が一度に出ます。
まずは誕生日がもう過ぎている「佐藤 花子」さんに注目してください。
1985年生まれなので、満41歳になっています。
DATEDIFで満年齢を出した名簿

数式はどのセルに入れる?

セルを選んで、数式バーに直接入力するだけです。
実際の入力画面がこちらです。
入力中は関数の引数のヒントが表示されるので、引数の順番を確認しながら進められます。
DATEDIFは関数候補に出てこないので、手入力してください。
DATEDIFの数式入力画面

方法② DATEDIFを使わずYEAR関数の差+補正で出す

DATEDIFは関数候補に出てこないので、使いたくない方もいるかもしれません。
そんなときは YEAR関数の差で代用できます。
D2セルに次の数式を入力します。

=YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0)

前半の =YEAR(TODAY())-YEAR(B2) だけでは、誕生日がまだ来ていない人を1歳多く数えてしまいます。
そこで後半の IF(…,1,0) で、今年の誕生日がまだ来ていなければ1を引いています。
これでDATEDIFを使わなくても、正しい満年齢になります。
誕生日がまだの「高橋 美咲」さんも、①と同じ満35歳になりました。
YEAR関数の差+補正で満年齢を出した名簿

数式はどのセルに入れる?

少し長い数式ですが、前半と後半に分けて見ると分かりやすくなります。
実際の入力画面がこちらです。
YEAR関数の差+補正の数式入力画面

方法③ YEARFRAC関数で端数を切り捨てて出す

年齢を小数でも扱いたいときは、YEARFRAC関数が便利です。
E2セルに =INT(YEARFRAC(B2,TODAY(),1)) と入力します。
YEARFRACは、2つの日付の間が「何年分あるか」を小数で返します。
最後の 1 は「実際の日数で数える」という指定です。
そのままでは小数になるので、INT関数で端数を切り捨てて満年齢にしています。
小数のまま使いたいときは、INTを外せばOKです。
YEARFRACで満年齢を出した名簿

数式はどのセルに入れる?

実際の入力画面がこちらです。
INTで囲むだけなので、数式はとてもシンプルですね。
YEARFRACの数式入力画面

おまけ. 数え年も出してみる

F2セルに =YEAR(TODAY())-YEAR(B2)+1 と入力すると、数え年が出せます。
数え年は、生まれた年を1歳とし、元日を迎えるたびに1つ増える数え方です。
そのため満年齢より1つ(誕生日前なら2つ)大きくなることがあります。
七五三や厄年など、古くからの風習で使われる年齢です。

VBAで年齢を一括計算する

人数が多いときや、毎回同じ作業をするときは、VBAで一括計算するのがラクです。
Alt+F11でVBAエディターを開き、標準モジュールに次のコードを貼り付けます。

Sub 年齢を一括計算()
    Dim r As Long
    For r = 2 To 11
        Cells(r, 3).Formula = "=DATEDIF(B" & r & ",TODAY(),""Y"")"
    Next r
End Sub

実行すると、C2セルからC11セルまで満年齢が一瞬で入ります。
ボタンに登録しておけば、クリック1つで計算できるようになります。

タカヒロ

タカヒロ
今回の3つは、どれも「今日と生年月日の差」を年で出しているだけです。
1つだけ覚えるなら DATEDIF、使いたくないときは YEARの差+補正、小数がほしいときは YEARFRAC と使い分けてみてくださいね。
数式が長く見えても、やっていることは同じなのでカンタンですね。

3つの方法の比較

3つの方法の特徴を表にまとめました。
出したい年齢の形に合わせて選ぶと迷いません。

方法 数式 向いている場面 注意点
① DATEDIF =DATEDIF(B2,TODAY(),”Y”) 満年齢をいちばんカンタンに出したい 関数候補に出ないので手入力。スペルに注意
② YEAR差+補正 =YEAR(TODAY())-YEAR(B2)-IF(…,1,0) DATEDIFを使わずに満年齢を出したい 数式が長い。補正のIFを忘れると1歳多く出る
③ YEARFRAC =INT(YEARFRAC(B2,TODAY(),1)) 年齢を小数でも扱いたい INTを外すと小数のまま。四捨五入はROUND
おまけ 数え年 =YEAR(TODAY())-YEAR(B2)+1 七五三・厄年など数え年がほしい 満年齢より1〜2大きくなる
POINT

満年齢を出すなら DATEDIFの”Y” がいちばんカンタンです。
DATEDIFを使いたくないときは YEARの差+IF補正、
小数で扱いたいときは YEARFRAC と使い分けましょう。
数え年は =YEAR(TODAY())-YEAR(生年月日)+1 で求められます。

うまくいかないときの対処法(トラブルシュート)

実際に試すと、思ったように動かないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。

症状 原因 対処
DATEDIFが関数候補に出ない 古い互換関数で、入力候補に表示されない 手入力する。スペルは DATEDIF(DATEFIFではない)
誕生日前なのに1歳多く出る YEARの差だけでは誕生日の補正がない IFで補正を入れる/DATEDIFの “Y” を使う
生年月日が文字列で認識されない 「1985.5.20」など日付以外の形式で入力している =DATEVALUE() で日付に変換する/「1985/5/20」形式で入力し直す
TODAY()が開くたびに変わる 基準日が常に「今日」になってしまう 固定したいときは日付を手入力する(Ctrl+; で今日の日付を入力できます)
年齢が小数で出る YEARFRACの結果をそのまま使っている INT で切り捨て、ROUND で四捨五入する
#VALUE! になる 生年月日が文字列、または空欄になっている 生年月日を日付に直す。空欄を隠すなら =IFERROR(…,””) を使う

関数の説明

今回使う3つの関数の概要です。
どれも日付の計算でよく使う関数なので、違いを押さえておきましょう。

DATEDIF関数(デイトディフ)

書式 =DATEDIF(開始日, 終了日, 単位)
できること 開始日から終了日までの期間を、指定した単位で返します。
戻り値 単位に応じた数値(年数・月数・日数)
こんなときに 年齢や勤続年数など、満年数で出したいとき。
注意 関数候補に出ないため手入力が必要です。単位 “Y” は満年数を表します。
=DATEDIF(B2, TODAY(), "Y")

YEARFRAC関数(イヤーフラック)

書式 =YEARFRAC(開始日, 終了日, [基準])
できること 2つの日付の間が何年分あるかを小数で返します。
戻り値 年数(小数)
こんなときに 年齢を小数で扱いたいとき。INT で囲めば満年齢になります。
注意 第3引数の基準は 1(実際の日数)を指定します。省略すると1ヶ月を30日として計算されます。
=INT(YEARFRAC(B2, TODAY(), 1))

TODAY関数(トゥデイ)

書式 =TODAY()
できること 今日の日付を返します。引数はありません。
戻り値 今日の日付(シリアル値)
こんなときに 基準日を常に「今日」にしたいとき。=DATEDIF(B2, TODAY(), “Y”) でいつでも最新の年齢になります。
注意 開くたび・日が変わるたびに値が変わります。固定したいときは使わないでください。
=TODAY()

完成

C列に満年齢が、F列に数え年が並びました。
3つの方法のどれで出しても、同じ満年齢になっています。
思ったとおりに動きましたか?
生年月日を書き換えると満年齢も自動で更新され、誕生日を迎えると1つ増えます。
見出しに▼ボタンを付けておけば、年齢での並べ替えもすぐできます。
満年齢と数え年が自動で出た完成表

さいごに

いかがでしょうか。

今回は、

・Excelで年齢を計算する方法3選(DATEDIF/YEAR補正/YEARFRAC)

についてまとめました。

まずは今回のサンプル名簿で、ぜひ一度試してみてください。
生年月日を入れるだけで年齢が自動で出るので、名簿や会員管理の手計算がなくなりますよ。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image