=DATEDIF(B2,TODAY(),"Y")は、B2の日付に生まれた人の満年齢を返します。DATEDIFは2つの日付の間の満年数を数え、TODAY()が2つ目の日付を与えるので、年齢は誕生日ごとに1つ上がります。
| A | B | C | |
|---|---|---|---|
| 1 | Name | Born | Age |
| 2 | Ana | 1990-05-14 | 36 |
| 3 | Ben | 1985-11-30 | 40 |
| 4 | Chloe | 2001-02-28 | 25 |
| 5 | Dan | 1978-10-10 | 47 |
| 6 | Eva | 2010-07-04 | 16 |
C列の年齢は今日の日付から計算されるので、年が進むにつれて変わります。B列の生年月日を変えると、隣の年齢もそれに合わせて変わります。数式の引数は3つです。開始日(生年月日)、終了日(今日)、単位で、満年数なら"Y"です。
特定の日付時点の年齢
学年の始まりや契約日のような決まった日の年齢を出すには、その日をセルに入れ、TODAY()の代わりにそのセルを使います。$F$2の$は、数式を下にコピーしても参照をF2に固定します。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Born | Age | As of | ||
| 2 | Ana | 1990-05-14 | 36 | 2026-10-01 | ||
| 3 | Ben | 1985-11-30 | 40 | |||
| 4 | Chloe | 2001-02-28 | 25 | |||
| 5 | Dan | 1978-10-10 | 47 | |||
| 6 | Eva | 2010-07-04 | 16 |
2026-10-01の時点でAnaは36歳、Danは47歳です。Danの10月10日の誕生日はまだ来ていません。F2を2026-10-10に変えると、Danは48歳になります。この形ならファイルを開くたびに同じ結果になるので、年齢をレポートに載せるときに大切です。ほかの単位はDATEDIFのページを参照してください。
何歳何か月何日
DATEDIFには、満年数の後に残った部分のための単位があります。"YM"は最後の満年からの月数を、"MD"は最後の満月からの日数を数えます。3つを&でつなげば、年齢を文字列で書けます。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Born | Years | Months | Days | Age | As of |
| 2 | 1990-05-14 | 36 | 4 | 17 | 36 years, 4 months, 17 days | 2026-10-01 |
| 3 | 1978-10-10 | 47 | 11 | 21 | 47 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が小数部分を切り捨てます。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Born | As of | DATEDIF | YEARFRAC |
| 2 | 1990-05-14 | 2026-10-01 | 36 | 36 |
| 3 | 1978-10-10 | 2026-10-01 | 47 | 47 |
| 4 | 2010-07-04 | 2026-10-01 | 16 | 16 |
どちらの列も36、47、16で一致します。INTがないと、最後の行のYEARFRACは約16.24を返します。統計のシートなどで年齢を小数で使いたいときに役立ちます。
365で割らない理由
よくある近道が=INT((F2-B2)/365)で、生きてきた日数を1年の日数で割ります。うるう年が4年ごとに1日増えるので、数十年たつとこの数式は誕生日の数日前に次の年齢に達します。48歳の誕生日なら12日早くなります。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Born | As of | Days lived | Divide by 365 | DATEDIF |
| 2 | 1990-05-14 | 2026-10-01 | 13289 | 36 | 36 |
| 3 | 1978-10-10 | 2026-10-01 | 17523 | 48 | 47 |
1978-10-10生まれの人について、365で割る方法は2026-10-01の時点で48歳と言いますが、これは48歳の誕生日の9日前です。DATEDIFは47歳と言います。365.25で割るとほとんどの行は直りますが、日付によってはまだずれるので、DATEDIFかYEARFRACを使ってください。
練習: 入学日時点の年齢
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Born | Age | As of | |
| 2 | Ana | 2012-04-17 | 2026-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は暦の年数を数えるので、この誤差はありません。