Excelで年齢を自動計算したい!よくある悩みとは
「社員名簿に生年月日は入力したけれど、年齢を手動で更新するのが面倒…」「イベント参加者の年齢を一括で計算したい」——こんな悩みを抱えていませんか?実は、Excelの関数を使えば生年月日から年齢を自動計算できます。しかも、日付が変わるたびに自動更新されるので、一度設定すれば手間は一切かかりません。
この記事では、Excel初心者の方でもすぐに実践できるよう、年齢の自動計算に使う関数・数式・書式設定を丁寧に解説します。満年齢の計算はもちろん、「○歳○ヶ月」表示や和暦対応など、実務で役立つテクニックも網羅しています。ぜひ最後までお読みください。
年齢自動計算に使うExcel関数を知ろう
Excelで年齢を自動計算する方法は複数ありますが、核となる関数は主に3つです。まずはそれぞれの役割を理解しましょう。
TODAY関数——今日の日付を自動取得
TODAY関数は、パソコンのシステム日付から今日の日付を自動的に返す関数です。ファイルを開き直すたびに日付が更新されるため、年齢計算の基準日として最適です。
書き方はとてもシンプルです。
=TODAY()
引数は不要で、カッコの中は空のままで構いません。セルに入力すると、その日の日付が表示されます。
DATEDIF関数——2つの日付間の期間を計算
DATEDIF関数は、開始日と終了日の間の年数・月数・日数を計算できる関数です。Excelの関数一覧には表示されない「隠し関数」ですが、正しく入力すれば問題なく使えます。
基本構文は以下のとおりです。
=DATEDIF(開始日, 終了日, 単位)
| 単位 | 意味 | 返す値 |
|---|---|---|
| “Y” | 満年数 | 期間内の満年数(整数) |
| “M” | 満月数 | 期間内の総月数(整数) |
| “D” | 日数 | 期間内の総日数(整数) |
| “YM” | 月の端数 | 年を除いた残りの月数 |
| “MD” | 日の端数 | 月を除いた残りの日数 |
| “YD” | 年を除いた日数 | 年を除いた残りの日数 |
年齢の自動計算には、単位「Y」を使うのが基本です。
YEARFRAC関数・YEAR関数——代替手段として
DATEDIF関数以外にも、YEAR関数やYEARFRAC関数を組み合わせて年齢を計算する方法があります。これらは後のセクションで詳しく解説します。
【基本】DATEDIF関数で満年齢を自動計算する方法
ここからは実際の操作手順を見ていきましょう。最も一般的でシンプルな方法です。
手順1:生年月日を入力する
まず、A列に氏名、B列に生年月日を入力します。生年月日のセル(例:B2)には日付形式でデータを入力してください。「1990/5/15」や「1990年5月15日」のように入力すると、Excelが日付データとして認識します。
ここで注意点があります。「19900515」のように数字だけで入力すると、Excelは日付ではなく数値として認識してしまいます。必ずスラッシュ(/)やハイフン(-)で区切りましょう。
手順2:DATEDIF関数とTODAY関数を組み合わせる
年齢を表示したいセル(例:C2)に、次の数式を入力します。
=DATEDIF(B2,TODAY(),”Y”)
この数式の意味を分解すると、以下のようになります。
- B2:生年月日(開始日)
- TODAY():今日の日付(終了日)
- “Y”:満年数を返す
Enterキーを押すと、B2の生年月日から今日までの満年齢が表示されます。
手順3:数式をコピーする
C2セルの右下にカーソルを合わせると、小さな「+」マーク(フィルハンドル)が表示されます。これを下方向にドラッグすると、他の行にも同じ数式がコピーされます。全員分の年齢が一瞬で計算されるので、大量のデータでも安心です。
実際の入力例
| 氏名(A列) | 生年月日(B列) | 年齢(C列)の数式 | 結果(例) |
|---|---|---|---|
| 田中太郎 | 1985/3/10 | =DATEDIF(B2,TODAY(),”Y”) | 40 |
| 鈴木花子 | 1992/11/25 | =DATEDIF(B3,TODAY(),”Y”) | 32 |
| 佐藤一郎 | 2000/7/1 | =DATEDIF(B4,TODAY(),”Y”) | 24 |
※結果は2025年7月時点の例です。TODAY関数により、ファイルを開いた日の年齢に自動更新されます。
【応用】年齢を「○歳○ヶ月」「○歳○ヶ月○日」で表示する方法
実務では「満年齢だけでなく、月や日も知りたい」というケースがあります。たとえば、保育園や介護施設の書類では「○歳○ヶ月」の表記が求められることがあります。
「○歳○ヶ月」で表示する数式
次の数式を使うと、年齢を「○歳○ヶ月」形式で表示できます。
=DATEDIF(B2,TODAY(),”Y”)&”歳”&DATEDIF(B2,TODAY(),”YM”)&”ヶ月”
ポイントは「&」(アンパサンド)で文字列を結合していることです。DATEDIF関数を2回使い、1回目は「Y」で年を、2回目は「YM」で年を除いた残りの月数を取得しています。
表示例:32歳8ヶ月
「○歳○ヶ月○日」で表示する数式
さらに日数まで表示したい場合は、3つ目のDATEDIF関数を追加します。
=DATEDIF(B2,TODAY(),”Y”)&”歳”&DATEDIF(B2,TODAY(),”YM”)&”ヶ月”&DATEDIF(B2,TODAY(),”MD”)&”日”
表示例:32歳8ヶ月15日
数式が長くなりますが、やっていることはシンプルです。年・月・日をそれぞれ計算し、文字列で結合しているだけです。
注意点:DATEDIF関数の「MD」単位の不具合
DATEDIF関数の「MD」単位は、一部のExcelバージョン(特に古いバージョン)で計算結果が不正確になるケースが報告されています。もし「MD」の結果がおかしいと感じた場合は、以下の代替数式を使いましょう。
=DAY(TODAY())-DAY(B2)+IF(DAY(TODAY())<DAY(B2),DAY(DATE(YEAR(TODAY()),MONTH(TODAY()),0)),0)
やや複雑ですが、より正確な日数を算出できます。
DATEDIF関数を使わない年齢計算方法
DATEDIF関数は便利ですが、「隠し関数なので不安」「関数の入力補助が効かなくて使いにくい」という声もあります。ここでは、DATEDIF関数を使わない代替方法を2つ紹介します。
方法1:YEARFRAC関数を使う方法
YEARFRAC関数は、2つの日付間の年数を小数で返す関数です。INT関数(小数点以下を切り捨てる関数)と組み合わせることで、満年齢を算出できます。
=INT(YEARFRAC(B2,TODAY()))
この方法のメリットは、関数の入力補助(オートコンプリート)が使えることです。入力時に候補が表示されるので、タイプミスを防ぎやすくなります。
方法2:YEAR・MONTH・DAY関数を組み合わせる方法
もう一つの方法は、基本的な日付関数を組み合わせる方法です。
=YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0)
この数式の考え方は次のとおりです。
- まず、今年の西暦から生まれた年の西暦を引く
- 今年の誕生日がまだ来ていなければ、1を引いて調整する
たとえば、生年月日が1990年12月1日で、今日が2025年7月10日の場合を考えます。2025-1990=35ですが、12月1日の誕生日はまだ来ていないので、35-1=34歳となります。
3つの方法の比較
| 方法 | 数式の簡潔さ | 入力補助 | 正確性 | おすすめ度 |
|---|---|---|---|---|
| DATEDIF関数 | ◎ | ×(非表示) | ◎ | ★★★★★ |
| YEARFRAC関数 | ○ | ○ | ○ | ★★★★☆ |
| YEAR/MONTH/DAY | △(長い) | ○ | ◎ | ★★★☆☆ |
総合的にはDATEDIF関数が最もおすすめです。ただし、チームで共有するファイルで「この関数は何?」と質問される可能性がある場合は、セルにコメントを付けておくと親切です。
特定の基準日時点の年齢を計算する方法
ここまではTODAY関数を使って「今日時点の年齢」を計算してきました。しかし実務では、特定の日付を基準にした年齢を求めたいケースがあります。
よくあるケース
- 4月1日時点の年齢を計算したい(学校の学年判定)
- イベント開催日時点の年齢を知りたい
- 年度末(3月31日)時点の年齢で集計したい
- 保険の契約日時点での年齢を算出したい
数式の書き方
TODAY()の代わりに、基準日を直接指定するだけです。
=DATEDIF(B2,”2025/4/1″,”Y”)
あるいは、基準日をセルに入力しておき、そのセルを参照する方法もあります。
=DATEDIF(B2,$D$1,”Y”)
D1セルに「2025/4/1」と入力しておけば、基準日を変更するだけで全員の年齢が再計算されます。$D$1のようにドルマーク(絶対参照)を付けることで、数式をコピーしてもD1セルへの参照がずれません。
学齢(学年)の判定に使うテクニック
日本の学校制度では、4月2日生まれ~翌年4月1日生まれが同じ学年になります。4月1日生まれが「早生まれ」として1つ上の学年に入るのは有名な話です。
学年判定をExcelで行う場合は、基準日を「4月1日」に設定したDATEDIF関数が便利です。
=DATEDIF(B2,”2026/4/1″,”Y”)-6
この数式で、2026年度(2026年4月1日時点)の学年が算出できます。結果が「1」なら小学1年生、「7」なら中学1年生といった具合です。
年齢計算でよくあるエラーと対処法
年齢の自動計算を設定したものの、エラーが出て困った経験はありませんか?ここでは、よくあるトラブルとその解決策を紹介します。
エラー1:#VALUE!が表示される
最も多い原因は、生年月日のセルが日付データとして認識されていないことです。見た目は日付でも、文字列として入力されているケースがあります。
確認方法は簡単です。セルを選択して、ホームタブの「表示形式」欄を確認してください。「文字列」と表示されていたら、日付として認識されていません。
対処法:
- セルの表示形式を「日付」に変更する
- セルをダブルクリックして編集モードに入り、Enterキーを押す
- それでも直らない場合は、DATEVALUE関数で変換する:=DATEVALUE(B2)
エラー2:#NUM!が表示される
DATEDIF関数で開始日が終了日より後の日付になっていると、#NUM!エラーが発生します。たとえば、生年月日に未来の日付が入っている場合です。
対処法:
- 生年月日のデータに誤りがないか確認する
- IFERROR関数でエラーを非表示にする:=IFERROR(DATEDIF(B2,TODAY(),”Y”),””)
エラー3:年齢が正しくない(1歳ずれる)
YEARFRAC関数を使った場合、まれに端数処理の関係で1歳多く計算されることがあります。特に誕生日当日に起こりやすい現象です。
対処法:
最も正確な結果を求めるなら、DATEDIF関数を使いましょう。DATEDIF関数の「Y」単位は、誕生日を正確に考慮した満年齢を返します。
エラー4:セルに「######」と表示される
これはエラーではなく、列幅が狭いだけです。列の幅を広げれば正しく表示されます。列の境界線をダブルクリックすると、自動的に最適な幅に調整されます。
エラー5:年齢が自動更新されない
通常、TODAY関数はファイルを開いたときに自動更新されます。しかし、自動計算がオフになっていると更新されません。
対処法:
- 「数式」タブを開く
- 「計算方法の設定」を「自動」に変更する
- 手動で再計算したい場合はF9キーを押す
実務で使える!年齢計算の応用テクニック集
基本的な年齢計算をマスターしたら、実務で役立つ応用テクニックにも挑戦しましょう。
応用1:年齢に「歳」を付けて表示する(セルの書式設定)
数式の結果に「&”歳”」を付ける方法もありますが、その場合はセルの値が文字列になり、並べ替えや集計に使えなくなるデメリットがあります。
おすすめはセルの書式設定で「歳」を付ける方法です。
- 年齢のセルを選択する
- 右クリック →「セルの書式設定」を開く
- 「表示形式」タブで「ユーザー定義」を選ぶ
- 種類の欄に 0″歳” と入力する
- OKをクリックする
これで「35歳」のように表示されますが、セル内部の値は数値の「35」のままです。フィルター・並べ替え・AVERAGE関数での集計もそのまま使えます。
応用2:年齢層(年代)を自動分類する
アンケート集計やマーケティング分析では、年齢を「20代」「30代」などの年代に分類したいことがあります。
=INT(DATEDIF(B2,TODAY(),”Y”)/10)*10&”代”
この数式では、年齢を10で割り、INT関数で小数点以下を切り捨て、再び10を掛けることで年代を算出しています。たとえば、35歳なら35÷10=3.5→INT(3.5)=3→3×10=30→「30代」となります。
応用3:条件付き書式で特定の年齢を強調する
たとえば「65歳以上のセルを赤く塗りたい」という場合は、条件付き書式が便利です。
- 年齢のセル範囲を選択する
- 「ホーム」タブ →「条件付き書式」→「新しいルール」
- 「数式を使用して、書式設定するセルを決定」を選ぶ
- 数式欄に =C2>=65 と入力する
- 書式ボタンで背景色を赤に設定し、OKをクリックする
これで、65歳以上のセルが自動的に赤くなります。年齢が更新されれば、書式も自動的に変わります。
応用4:和暦の生年月日から年齢を計算する
「昭和60年3月10日」のような和暦データでも、Excelが日付として認識していれば通常どおりDATEDIF関数で計算できます。
もし和暦が文字列として入力されている場合は、一度西暦に変換する必要があります。変換にはDATEVALUE関数を使います。
=DATEVALUE(“1985/3/10”)
和暦から西暦への変換テーブルを別シートに用意し、VLOOKUP関数で参照する方法も効率的です。
応用5:XLOOKUP関数やIF関数との組み合わせ
年齢に応じた料金区分を自動で判定したい場合、IF関数やIFS関数が役立ちます。
=IFS(C2<6,”未就学児”,C2<12,”小学生”,C2<18,”中高生”,C2<65,”大人”,C2>=65,”シニア”)
この数式で、年齢に応じた5つの区分を自動判定できます。施設の入場料計算やイベントの参加費算出に応用可能です。
応用6:AVERAGE関数で平均年齢を算出する
名簿全体の平均年齢を知りたい場合は、年齢が計算されたセル範囲にAVERAGE関数を使います。
=AVERAGE(C2:C100)
先ほど紹介した「セルの書式設定で歳を付ける方法」を使っていれば、この集計がスムーズに行えます。「&歳」で文字列結合していると、AVERAGE関数がエラーになるので注意してください。
Google スプレッドシートでの年齢計算
ExcelだけでなくGoogle スプレッドシートを使う方も増えています。基本的な数式はExcelと同じですが、いくつか違いがあるので確認しておきましょう。
DATEDIF関数はGoogle スプレッドシートでも使える
嬉しいことに、DATEDIF関数はGoogle スプレッドシートでも問題なく動作します。書き方もまったく同じです。
=DATEDIF(B2,TODAY(),”Y”)
Google スプレッドシートならではのメリット
- リアルタイム更新:クラウド上で常に最新の日付が反映される
- 共同編集:複数人で同時に名簿を管理できる
- スマホからもアクセス可能:外出先でも年齢データを確認できる
チームで名簿を共有管理する場合は、Google スプレッドシートの活用もぜひ検討してみてください。
まとめ:Excel年齢自動計算のポイント
この記事で解説した内容を整理します。
- DATEDIF関数とTODAY関数の組み合わせが、年齢自動計算の王道
- 基本の数式は =DATEDIF(生年月日セル,TODAY(),”Y”)
- 「○歳○ヶ月」表示は、単位「YM」「MD」を追加して文字列結合
- DATEDIF関数以外にもYEARFRAC関数やYEAR関数で代替可能
- 特定の基準日で計算するなら、TODAY()を日付やセル参照に置き換える
- エラーが出たら、セルの表示形式が日付になっているか最初に確認
- セルの書式設定で「0″歳”」と設定すれば、数値のまま「歳」表示が可能
- 条件付き書式やIF関数と組み合わせれば、年齢に応じた分類や強調も自動化できる
年齢の自動計算は、一度設定すればその後の手間がゼロになる非常にコスパの良い仕組みです。ぜひ今日から活用してみてください。
よくある質問(FAQ)
ExcelのDATEDIF関数が入力候補に表示されないのですが、使えますか?
はい、問題なく使えます。DATEDIF関数はExcelの「隠し関数」のため、関数の入力補助(オートコンプリート)には表示されません。しかし、=DATEDIF(開始日,終了日,”Y”)のように直接入力すれば正常に動作します。Excel 2007以降のすべてのバージョンで利用可能です。
生年月日を入力しても年齢計算がうまくいかない原因は何ですか?
最も多い原因は、生年月日のセルが日付データではなく文字列として認識されていることです。セルを選択し、ホームタブの表示形式が「文字列」になっていないか確認してください。文字列の場合は表示形式を「日付」に変更し、セルをダブルクリックしてEnterを押すと正しく認識されます。
年齢を「○歳○ヶ月」形式で表示するにはどうすればよいですか?
DATEDIF関数を2つ組み合わせます。数式は =DATEDIF(B2,TODAY(),”Y”)&”歳”&DATEDIF(B2,TODAY(),”YM”)&”ヶ月” です。1つ目のDATEDIFで満年数を、2つ目で年を除いた残りの月数を計算し、&記号で文字列を結合しています。
特定の日付(例:4月1日)時点の年齢を計算できますか?
はい、可能です。TODAY()の部分を特定の日付に置き換えるだけです。例えば =DATEDIF(B2,”2025/4/1″,”Y”) と入力すれば、2025年4月1日時点の年齢が計算されます。基準日をセルに入力して参照する方法もおすすめです。
DATEDIF関数を使わずに年齢を計算する方法はありますか?
はい、2つの代替方法があります。1つ目は =INT(YEARFRAC(B2,TODAY())) で、YEARFRAC関数とINT関数を組み合わせる方法です。2つ目は =YEAR(TODAY())-YEAR(B2)-IF(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))>TODAY(),1,0) で、YEAR・MONTH・DAY関数を使う方法です。いずれも正確な満年齢を計算できます。
Google スプレッドシートでも同じ方法で年齢を計算できますか?
はい、DATEDIF関数やTODAY関数はGoogle スプレッドシートでも同じ書き方で使えます。=DATEDIF(B2,TODAY(),”Y”) とExcelと全く同じ数式を入力すれば、年齢が自動計算されます。クラウド上で常に最新の日付が反映されるため、リアルタイムで年齢が更新されるメリットもあります。
年齢のセルに「歳」を付けても数値として扱うことはできますか?
はい、セルの書式設定を使えば可能です。セルを右クリック→「セルの書式設定」→「表示形式」タブ→「ユーザー定義」を選び、種類の欄に 0″歳” と入力してください。見た目は「35歳」と表示されますが、セル内部の値は数値の35のまま保持されるため、並べ替えやAVERAGE関数での集計にも使えます。

コメント