Menu

Excelで生年月日から年齢を計算する方法(DATEDIF関数)

=DATEDIF(B2,TODAY(),"Y")は、B2の日付に生まれた人の満年齢を返します。特定の日付時点の年齢、何歳何か月何日、DATEDIFを使わない計算方法も学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=DATEDIF(B2,TODAY(),"Y")は、B2の日付に生まれた人の満年齢を返します。DATEDIFは2つの日付の間の満年数を数え、TODAY()が2つ目の日付を与えるので、年齢は誕生日ごとに1つ上がります。

生年月日から年齢を出す
C2
ABC
1NameBornAge
2Ana1990-05-1436
3Ben1985-11-3040
4Chloe2001-02-2825
5Dan1978-10-1047
6Eva2010-07-0416
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

C列の年齢は今日の日付から計算されるので、年が進むにつれて変わります。B列の生年月日を変えると、隣の年齢もそれに合わせて変わります。数式の引数は3つです。開始日(生年月日)、終了日(今日)、単位で、満年数なら"Y"です。

特定の日付時点の年齢

学年の始まりや契約日のような決まった日の年齢を出すには、その日をセルに入れ、TODAY()の代わりにそのセルを使います。$F$2の$は、数式を下にコピーしても参照をF2に固定します。

指定した日付時点の年齢
C2
ABCDEF
1NameBornAgeAs of
2Ana1990-05-14362026-10-01
3Ben1985-11-3040
4Chloe2001-02-2825
5Dan1978-10-1047
6Eva2010-07-0416
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

2026-10-01の時点でAnaは36歳、Danは47歳です。Danの10月10日の誕生日はまだ来ていません。F2を2026-10-10に変えると、Danは48歳になります。この形ならファイルを開くたびに同じ結果になるので、年齢をレポートに載せるときに大切です。ほかの単位はDATEDIFのページを参照してください。

何歳何か月何日

DATEDIFには、満年数の後に残った部分のための単位があります。"YM"は最後の満年からの月数を、"MD"は最後の満月からの日数を数えます。3つを&でつなげば、年齢を文字列で書けます。

年、月、日
E2
ABCDEF
1BornYearsMonthsDaysAgeAs of
21990-05-143641736 years, 4 months, 17 days2026-10-01
31978-10-1047112147 years, 11 months, 21 days
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

1990-05-14から2026-10-01までは36年4か月17日です。Microsoftは"MD"の単位を使わないよう勧めています。生年月日が31日の場合など、日数がマイナスになったり間違ったりすることがあるからです。生年月日が29日から31日のときは、日数を確かめてください。

DATEDIFを使わずに年齢を計算する

DATEDIFはどのバージョンのExcelでも使えますが、関数の一覧にも数式のオートコンプリートにも出てこないので、YEARFRACを好む人もいます。YEARFRAC(start,end,1)は、各年の実際の長さで数えて(基準1)、2つの日付の間の年数を小数で返します。INTが小数部分を切り捨てます。

DATEDIFとYEARFRACを並べる
D2
ABCD
1BornAs ofDATEDIFYEARFRAC
21990-05-142026-10-013636
31978-10-102026-10-014747
42010-07-042026-10-011616
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

どちらの列も36、47、16で一致します。INTがないと、最後の行のYEARFRACは約16.24を返します。統計のシートなどで年齢を小数で使いたいときに役立ちます。

365で割らない理由

よくある近道が=INT((F2-B2)/365)で、生きてきた日数を1年の日数で割ります。うるう年が4年ごとに1日増えるので、数十年たつとこの数式は誕生日の数日前に次の年齢に達します。48歳の誕生日なら12日早くなります。

365で割ると誕生日の前後でずれる
D2
ABCDE
1BornAs ofDays livedDivide by 365DATEDIF
21990-05-142026-10-01132893636
31978-10-102026-10-01175234847
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

1978-10-10生まれの人について、365で割る方法は2026-10-01の時点で48歳と言いますが、これは48歳の誕生日の9日前です。DATEDIFは47歳と言います。365.25で割るとほとんどの行は直りますが、日付によってはまだずれるので、DATEDIFかYEARFRACを使ってください。

練習: 入学日時点の年齢

やってみよう
C2
ABCDE
1NameBornAgeAs of
2Ana2012-04-172026-09-01
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: C2に、E2の日付時点でのAnaの満年齢を計算してください。

隠れたチェックではE2の日付が変わるので、数式はそのセルを読む必要があります。

年齢が日付で表示される理由

すでに日付が入っているセルや、日付の表示形式になっている列に年齢の数式を入力すると、Excelは日付の表示形式を保ち、36を1900-02-05と表示します(Excelの日付システムの36日目で、米国の設定では2/5/1900と読めます)。中の数値は正しいままです。セルを選び、ホーム > 表示形式 > 標準を選ぶ(またはCtrl+Shift+、MacではControl+Shift+を押す)と、年齢が表示されます。

よくある質問

Excelで年齢を計算する数式は?

生年月日をB2に入れて=DATEDIF(B2,TODAY(),"Y")と書きます。生年月日から今日までの満年数を数えるので、年齢は誕生日の当日に上がり、その前には上がりません。

Excelで特定の日付時点の年齢を計算するには?

その日付をセルに入れ、TODAY()の代わりに使います。=DATEDIF(B2,$F$2,"Y")はF2の日付時点の年齢を返します。$記号は、数式を下にコピーしてもF2を固定します。

DATEDIFを使わずにExcelで年齢を計算するには?

=INT(YEARFRAC(B2,TODAY(),1))を使います。YEARFRACは2つの日付の間の年数を小数で返し、INTが整数の年数を残します。

年齢の数式が1900-01-30のような日付を表示するのはなぜですか?

セルが日付の表示形式になっているので、年齢30がExcelの暦の30日目として表示されています。セルを選び、ホーム > 表示形式で「標準」にしてください。

年齢を365で割って求めるのが間違いなのはなぜですか?

うるう年が4年ごとに1日増えるので、=INT((TODAY()-B2)/365)は誕生日を数日早く数えます。1978-10-10生まれの人は、2026-10-01にこの数式では48歳になりますが、48歳になるのは9日後です。DATEDIFは暦の年数を数えるので、この誤差はありません。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める