PR
アフィリエイト広告を利用しています
アフィリエイト広告を利用しています

【コピペOK】エクセルで年齢を計算する方法|DATEDIFで満年齢・「○歳○か月」・基準日時点の年齢を出す

エクセルで年齢を計算|DATEDIFで満年齢・○歳○か月 EXCEL数式講座
スポンサーリンク

【この記事について】本記事は 2026年9月24日 時点で、Microsoft の公式サポート情報(記事末尾に出典)を確認し、あわせて Windows 版 Microsoft 365 の Excel(バージョン 16.0・ビルド 20326)で数式を実際に計算して書いています。記事中の計算結果は、特にことわりがない限り 2026年9月24日を「今日」として計算した値です。対象環境:Windows 版の Microsoft 365 の Excel(デスクトップ版)。公式ページの適用先には Excel 2024・2021・2019・2016 なども含まれています。Mac 版・Web 版、またはお使いのバージョンによって、画面の表示や入力候補の出方が異なる場合があります。また、本記事の計算結果はエクセル上の計算であり、法律や各種制度で使う年齢の数え方とは異なる場合があります。制度上の年齢は、それぞれの制度の案内に従ってください。本記事の内容の利用は、ご自身の判断と責任でお願いします。

エクセルで年齢を計算するなら、=DATEDIF(生年月日のセル,TODAY(),”Y”) の1つで足ります。これで「今日の時点で何歳か」という満年齢が出ます。「4月1日時点の年齢」なら TODAY() の部分を基準日に変えるだけ、「46歳4か月」のように月まで出したいなら “YM” を足すだけです。この記事では、そのまま貼って使える数式と、実際に計算して見つけたYEARFRAC 関数で年齢を出すときの落とし穴、#NUM! や「126」のようなおかしな結果の直し方をまとめます。

エクセルで年齢を計算する数式の組み立て図(生年月日と基準日をDATEDIFに渡し、単位Yで満年齢、YMで月を出す)
スポンサーリンク

まずはこれだけ|年齢計算の早見表

A2 セルに生年月日が入っている前提です。やりたいことに合う行の数式を、年齢を出したいセルに貼ってください。

やりたいこと 数式 結果の例(生年月日 1980/5/15)
今日の時点の満年齢 =DATEDIF(A2,TODAY(),”Y”) 46
決まった日(E1 セル)の時点の年齢 =DATEDIF(A2,$E$1,”Y”) 45(E1 が 2026/4/1 のとき)
「○歳○か月」で表示 =DATEDIF(A2,TODAY(),”Y”)&”歳”&DATEDIF(A2,TODAY(),”YM”)&”か月” 46歳4か月
勤続年数「○年○か月」 =DATEDIF(入社日,基準日,”Y”)&”年”&DATEDIF(入社日,基準日,”YM”)&”か月” 11年5か月(2015/4/1 入社・2026/9/30 時点)
年代(40代など) =INT(B2/10)*10&”代” 40代(B2 が年齢のとき)

ここから先は、1つずつ仕組みと注意点を見ていきます。

手順1|今日の時点の満年齢を出す(DATEDIF+TODAY)

DATEDIF(デイト・ディフ)関数は、2つの日付のあいだが「何年・何か月・何日」あるかを数える関数です。Microsoft の公式ページでも、年齢を計算する数式で利用すると便利だと紹介されています。

数式の形

=DATEDIF(開始日,終了日,”単位”)

  • 開始日:生年月日のセル(例:A2)
  • 終了日:いつの時点の年齢か。今日なら TODAY()
  • 単位:“Y” で「満何年」を数えます。ダブルクォーテーションで囲むのを忘れないでください

入れ方

  1. 年齢を出したいセル(例:B2)を選びます。
  2. =DATEDIF(A2,TODAY(),”Y”) と入力して Enter を押します。
  3. B2 の右下の小さな四角(フィルハンドル)をダブルクリックすると、下の行にもまとめてコピーされます。

入力の途中で出る関数の候補に DATEDIF が見当たらなくても、数式を最後まで入力して Enter を押せば計算されます(本記事の環境で、この数式の計算結果を確認しています)。

誕生日の前日・当日・翌日で確かめた結果

「今日」を 2026/9/24 として、誕生日の前後で結果がどう変わるかを実際に計算しました。

生年月日 =DATEDIF(A2,TODAY(),”Y”) 状態
1980/5/15 46 今年の誕生日はもう過ぎた
1980/9/24 46 今日が誕生日
1980/9/25 45 誕生日は明日(まだ45歳)

誕生日の当日から1つ上がり、誕生日の前日までは前の年齢のまま。名簿でふだん使う「満年齢」の数え方と同じ結果になります。

なお、TODAY 関数はブックを開いたときなどに再計算されるので、明日開けば明日の時点の年齢に変わります。「提出した日の年齢」を残しておきたいときは、次の手順2のように基準日を固定してください。

手順2|「4月1日時点」など決まった日の年齢を出す

学年・保険・名簿の締め日など、「○月○日の時点で何歳か」を出したい場面は多いはずです。TODAY() の部分を基準日に変えるだけです。

基準日をセルに入れておく方法(おすすめ)

  1. 空いているセル(例:E1)に基準日を入力します。例:2026/4/1
  2. 年齢のセルに =DATEDIF(A2,$E$1,”Y”) と入力します。
  3. 下の行へコピーします。

$E$1 のように $ を付けておくと、下へコピーしても基準日のセルがずれません。基準日を変えたくなったら E1 を書き換えるだけで、全員の年齢がまとめて変わります。

数式の中に直接 =DATEDIF(A2,”2026/4/1″,”Y”) と書いても計算されました。ただ、あとで基準日を変えるときに全部の数式を直すことになるので、セルに置く方法のほうが扱いやすいです。

4月1日生まれ・4月2日生まれで確かめた結果

生年月日 基準日 結果
1990/4/1 2026/4/1 36
1990/4/2 2026/4/1 35

DATEDIF は「誕生日の当日に1つ上がる」数え方です。学年の区切りのように、制度によって年齢の数え方に独自の決まりがある場合は、エクセルの結果をそのまま当てはめず、その制度の案内を確認してください。

手順3|「○歳○か月」で表示する(単位 “YM”)

単位を “YM” にすると、「満何年」を引いた残りの月数が出ます。”Y” と “YM” を & でつなげば、「46歳4か月」のような表示になります。

=DATEDIF(A2,TODAY(),”Y”)&”歳”&DATEDIF(A2,TODAY(),”YM”)&”か月”

生年月日 基準日 結果
1980/5/15 2026/9/24 46歳4か月
1980/9/25 2026/9/24 45歳11か月
2000/2/29 2025/2/28 24歳11か月
2000/2/29 2025/3/1 25歳0か月

「○日」まで出したいときに “MD” を使わない理由

DATEDIF には日数の端数を出す “MD” という単位もあります。ただ、Microsoft の公式ページでは、”MD” は負の値、ゼロ、または不正確な結果を返すことがあるとして、使用はお勧めしないと書かれています。名簿や書類に載せる年齢は「○歳」か「○歳○か月」までにしておくのが安全です。

手順4|勤続年数も同じ形で出せる

生年月日を入社日に変えれば、そのまま勤続年数になります。

  • 勤続年数(満何年):=DATEDIF(入社日のセル,基準日のセル,”Y”)
  • 勤続「○年○か月」:=DATEDIF(入社日のセル,基準日のセル,”Y”)&”年”&DATEDIF(入社日のセル,基準日のセル,”YM”)&”か月”

入社日 2015/4/1・基準日 2026/9/30 で計算すると、11年5か月になりました。

ただし、会社の規程で「入社月は1か月と数える」「休職期間は除く」などの決まりがある場合、この数式の結果とは一致しません。規程に合わせた数え方が必要なときは、規程のほうを優先してください。

YEARFRAC で年齢を出すと、誕生日の当日にずれることがある(実測)

年齢の出し方を調べると、DATEDIF のほかに =INT(YEARFRAC(A2,TODAY(),1)) のような YEARFRAC(イヤー・フラク)関数を使う方法も見つかります。YEARFRAC は2つの日付のあいだが「1年の何年分か」を小数で返す関数で、Microsoft の公式ページでは、年利など期間の割合を求める例が挙げられています。

本記事の環境で、DATEDIF と結果が同じになるかを確かめました。1970年からの生年月日と5つの基準日を組み合わせた 14,258 組を計算して比べた結果です。

数式 DATEDIF と違った組 違いが出た例
=INT(YEARFRAC(A2,基準日,1)) 7 組 生年月日 1980/9/24・基準日 2026/9/24(誕生日の当日)で、DATEDIF は 46、こちらは 45
=INT(YEARFRAC(A2,基準日))
(基準を省略)
2 組 生年月日 2000/2/29・基準日 2025/2/28 で、DATEDIF は 24、こちらは 25

基準に 1 を指定した形では、違いが出た7組はすべて誕生日の当日でした。誕生日の当日は年齢が上がる日ですが、組み合わせによっては 45.99… のように1にわずかに届かない値になり、INT で切り捨てると1つ少なくなります。すべての誕生日でずれるわけではない(1990/4/1 生まれ・2026/4/1 時点は正しく 36)ので、名簿をざっと見ただけでは気づきにくいのが困るところです。

基準を省略した形(30日/360日の計算)では、2月29日生まれの人で、まだ誕生日を迎えていない2月28日に1つ上がってしまいました。

満年齢が欲しいときは DATEDIF の “Y” を使い、YEARFRAC は「46.36年」のように小数の年数そのものが欲しいときに使うのが無難です。

「YEAR(TODAY())-生まれ年」との違い

Microsoft の TODAY 関数のページでは、=YEAR(TODAY())-1963 のように、今年の年から生まれ年を引く例が紹介されています。これは説明のとおり「今年の誕生日の時点での年齢」です。まだ誕生日を迎えていない人は、満年齢より1つ多く出ます。

生年月日 1980/9/25(今日 2026/9/24) 結果
=YEAR(TODAY())-YEAR(A2) 46(今年の誕生日の時点の年齢)
=DATEDIF(A2,TODAY(),”Y”) 45(今日の時点の満年齢)

エラー・おかしな結果が出たときの直し方

本記事の環境で、実際に起きた結果をもとにまとめています。

出た結果 原因 直し方
#NUM! 生年月日(開始日)が基準日より後になっている 生年月日の入力ミス(未来の日付・年の打ち間違い)を確認する
#VALUE! 生年月日が「1985.12.1」のようなドット区切りで、日付として読めていない 後述の置換で「/」区切りに直す
生年月日が空欄の行に「126」などの数字が出る 空欄が「0」として扱われ、1900年を起点に計算されている =IF(A2=””,””,DATEDIF(A2,TODAY(),”Y”)) で空欄のときは何も出さない
「1900/2/14」のような日付や ##### が出る 年齢のセルに日付の表示形式が付いている [ホーム] タブの表示形式を[標準]にする
日付が変わっても年齢が変わらない 計算方法が「手動」になっている [ファイル] →[オプション]→[数式]で計算方法を[自動]にする

#NUM! になる

Microsoft の公式ページにあるとおり、DATEDIF は開始日が終了日より大きいと #NUM! になります。年齢の計算で起きるのは、生年月日に未来の日付が入っているときです。2030年のように年を打ち間違えていないかを見てください。エラーを見せたくないだけなら =IFERROR(DATEDIF(A2,TODAY(),”Y”),””) で空欄にできますが、入力ミスが隠れてしまうので、先に元のデータを直すほうをおすすめします。

#VALUE! になる(ドット区切りの生年月日)

本記事の環境では、生年月日が文字として入っていても、「1985/12/1」「1985-12-01」「S60.12.1」「昭和60年12月1日」は年齢が計算されました。いっぽう「1985.12.1」のようなドット区切りは #VALUE! になりました。

  1. 生年月日の列を選びます。
  2. Ctrl + H で[置換]を開きます。
  3. [検索する文字列]に .(ピリオド)、[置換後の文字列]に /(スラッシュ)を入れて[すべて置換]を押します。

本記事の環境では、この置換のあと年齢が計算されるようになりました。日付が5桁の数字になる、勝手に別の日付に変わるなど、日付そのものの表示がおかしいときは、次の記事で原因ごとに直し方をまとめています。

【今すぐ直る】エクセルの日付がシリアル値(5桁の数字)になる・勝手に変わるを直す原因7つ
エクセルで日付を入力したのに「45892」のような数字になる、または勝手に別の日付へ変わってしまう原因を7つに整理。シリアル値の仕組みから表示形式の直し方、CSV取込・コピペでの変換トラブル、DATEVALUE関数の使い方までコピペで解決できます。

空欄の行に「126」が出る

生年月日がまだ入っていない行まで数式をコピーすると、空欄は「0」として扱われるため、1900年を起点にした年数(2026年なら 126)が出ます。空欄のときは何も表示しないように、IF 関数で包んでおきます。

=IF(A2=””,””,DATEDIF(A2,TODAY(),”Y”))

年齢が「1900/2/14」のような日付になる

日付の列をコピーして年齢の列を作ったときなどに、年齢のセルに日付の表示形式が残っていると、45 という年齢が「1900/2/14」のように見えます。列の幅が狭いと ##### になります。年齢の列を選んで、[ホーム] タブの表示形式を[標準]に戻してください。

「歳」を付けたいときは、表示形式で付ける

=DATEDIF(A2,TODAY(),”Y”)&”歳” のように文字をつなげると、結果は文字列になります。本記事の環境で確かめたところ、ISNUMBER 関数で「数値ではない」と判定されました。これだと、年齢で並べ替えたり平均を出したりするときに困ります。

見た目だけ「45歳」にしたいなら、数式は =DATEDIF(A2,TODAY(),”Y”) のままにして、表示形式で付けます。

  1. 年齢の列を選んで Ctrl + 1 を押します。
  2. [表示形式]タブの[ユーザー定義]を選びます。
  3. [種類]に 0″歳” と入力して[OK]を押します。

本記事の環境では、表示は「45歳」、中身は数値のまま(ISNUMBER が TRUE)になりました。

よくある質問

Q. 関数の一覧から DATEDIF が見つかりません。使えないのですか?

A. 一覧や入力候補で見当たらなくても、セルに直接 =DATEDIF(A2,TODAY(),”Y”) と最後まで入力すれば計算されます。本記事の環境でも、この数式で計算結果を確認しています。Microsoft の公式ページには、DATEDIF は Lotus 1-2-3 の古いブックをサポートするために用意されていると書かれています。

Q. 生年月日が和暦で入っていても計算できますか?

A. 本記事の環境では、日付として入力された和暦はもちろん、文字で入った「昭和60年12月1日」「S60.12.1」も計算されました。ただし、入力のしかたによって日付として読めない場合もあるので、#VALUE! が出たら、その行の入力の形を確認してください。表示だけ和暦にしたいときは、=TEXT(A2,”ggge年m月d日”) で「昭和55年5月15日」のような表示にできました。

Q. 2月29日生まれの人は、平年だといつ年齢が上がりますか?

A. DATEDIF で計算すると、平年は3月1日に上がりました(2000/2/29 生まれは、2025/2/28 時点で 24、2025/3/1 時点で 25)。これはエクセルの計算結果です。法律や制度のうえでの年齢の扱いが必要なときは、その制度の案内を確認してください。

Q. 年齢から「40代」「50代」を出したいです。

A. 年齢が B2 にあるなら =INT(B2/10)*10&”代” で「40代」と表示できました。集計に使うなら、「代」を付けずに =INT(B2/10)*10 のように数値のまま出しておくと、ピボットテーブルや COUNTIF で数えやすくなります。

Q. 「46.36歳」のように小数で出したいです。

A. そのときは YEARFRAC が向いています。=ROUND(YEARFRAC(A2,TODAY(),1),2) のように ROUND 関数で桁をそろえてください。ただし、この値を切り捨てて満年齢として使うと、前述のとおり誕生日の当日にずれることがあります。

まとめ

  • 満年齢は =DATEDIF(A2,TODAY(),”Y”)。誕生日の当日に1つ上がります。
  • 決まった日の時点なら、基準日をセルに置いて =DATEDIF(A2,$E$1,”Y”)。
  • 「○歳○か月」は “Y” と “YM” を & でつなぐ。”MD” は使わない。
  • INT(YEARFRAC(…)) は誕生日の当日などに1つずれる組み合わせがあった。満年齢には使わない。
  • #NUM! は生年月日の入力ミス、空欄の「126」は IF で包む、日付に見えたら表示形式を[標準]に。
  • 「歳」を付けるなら、数式ではなく表示形式 0″歳” で。

年齢の計算は、1本の数式を覚えてしまえば、名簿が何百行あっても一瞬で終わります。まずは手元の名簿で、1行だけ試してみてください。うまくいったら、あとは下へコピーするだけです。

次に読む

【今すぐ直る】エクセルの日付がシリアル値(5桁の数字)になる・勝手に変わるを直す原因7つ
エクセルで日付を入力したのに「45892」のような数字になる、または勝手に別の日付へ変わってしまう原因を7つに整理。シリアル値の仕組みから表示形式の直し方、CSV取込・コピペでの変換トラブル、DATEVALUE関数の使い方までコピペで解決できます。
【逆引き】エクセル関数の一覧はこう使う|まず覚える20個を「やりたいこと」から探す
エクセル関数の一覧は500個以上ありますが、事務仕事で使うのは20個ほど。「合計」「検索」「条件分け」など、やりたいことから逆引きできる一覧表と、コピペで試せる式・実際に返ってくる答えをまとめました。
【コピペで確認】VLOOKUPが#N/Aになる原因と対処7選|完全一致・空白・型ずれ・IFERROR
VLOOKUPで#N/Aが出る原因を7つに整理。前後の空白や全角半角、数値と文字列の型違い、完全一致のFALSE指定、絶対参照、左端列ルール、IFERRORの応急処置まで、コピペで直せる数式つきでやさしく解説します。

出典(2026年9月24日 確認)

DATEDIF 関数|Microsoft サポート
https://support.microsoft.com/ja-jp/excel/functions/datedif-function

YEARFRAC 関数|Microsoft サポート
https://support.microsoft.com/ja-jp/excel/functions/yearfrac-function

TODAY 関数|Microsoft サポート
https://support.microsoft.com/ja-jp/excel/functions/today-function


当ブログは、お風呂好きのみなさんとに快適なお風呂生活を楽しんで頂きたい思いで運営しています。
「記事が役に立った」「続きも読んでみたい」と感じていただけたら、下記リンクからのご利用・ご支援で応援してもらえると嬉しいです。

※Amazonのアソシエイトとして、「メリ爺のウチ風呂万歳」は適格販売により収入を得ています。

EXCEL数式講座
スポンサーリンク
シェアする
メリ爺をフォローする

コメント

タイトルとURLをコピーしました