Excelで生年月日を管理するときは、単に日付を入力するだけでなく、年齢や満年齢、次の誕生日までの日数などを自動計算できる形に整えることが大切です。
入力方法と表示形式、DATEDIF関数やTODAY関数を組み合わせれば、名簿や顧客一覧、従業員台帳を更新の手間が少ない表にできます。
生年月日は日付として入力する
年齢はDATEDIF関数とTODAY関数で自動計算する
表示だけを変えたい場合はセルの書式設定を使う
生年月日を文字列ではなく日付データとして保存することが、計算ミスを防ぐ最初のポイントです。
ここではWindows版Excelを想定し、入力から年齢計算、和暦表示、エラー対策まで順に確認していきましょう。
エクセルで生年月日を入力して年齢を自動計算する方法
それではまず、生年月日を日付として入力し、年齢を自動表示する基本の方法について解説していきます。
| 氏名 | 生年月日 | 年齢 |
|---|---|---|
| 山田 花子 | 1992/8/15 | 33 |
| 佐藤 恒一 | 1987/2/3 | 39 |
生年月日の入力規則と日付形式
生年月日を入力するセルでは、2020/4/1や2020-4-1のように、Excelが日付として認識しやすい形式を使います。
たとえばB列を生年月日列にする場合、B2へ1992/8/15と入力してEnterキーを押すと、通常は日付データとして保存されます。
入力後にセルを選択し、数式バーに1992/8/15と表示されるなら、日付として扱われている可能性が高い状態です。
ただし、セルの左上に緑色の三角が出たり、文字が左寄せになったりする場合は、日付ではなく文字列になっているかもしれません。
文字列の生年月日はDATEDIF関数で正しく計算できない原因になるため、年齢計算の前に確認しましょう。

入力前に対象セルを選択し、ホームタブの表示形式から日付を選んでおくと、入力ルールを統一しやすくなります。
年月日を西暦で統一する名簿では、表示形式をyyyy/m/dに設定すると、桁数の違う日付でも見やすくなります。
生年月日の列を複数人分入力する場合も、1行目を見出しにして、実際のデータは2行目から並べる構成が扱いやすいでしょう。
たとえばA1に氏名、B1に生年月日、C1に年齢を入力し、A2以降へ個人データを記録します。
このように列の役割を固定しておくと、関数を下方向へコピーするときに参照先がずれにくくなります。
年月だけしか分からない場合に適当な日を入力すると、年齢計算の基準日が変わるため、本人確認用の台帳では正確な日付を確認する必要があります。
誕生日が未確認のデータを扱うなら、空欄のままにするか、別列に確認状況を記録する方法が安全です。
入力例はB2に1992/8/15です。
生年月日を文字として貼り付けた場合は、セルを選択してデータタブの区切り位置から変換できる場合があります。
また、1900年より前の生年月日を扱うときは、Excelのバージョンや日付システムの設定によって制約が出ることがあります。
一般的な社員名簿や顧客管理表なら、現在のExcelで扱える日付範囲内かを事前に確認しておくと安心です。
入力担当者が複数いる表では、日付の区切り記号をスラッシュにそろえるだけでも、データの見た目と検索性が安定します。
DATEDIF関数による満年齢の計算
年齢を自動表示する代表的な数式は、DATEDIF関数とTODAY関数を組み合わせた式です。
C2セルに次の数式を入力すると、B2の生年月日から今日時点の満年齢を計算できます。
=DATEDIF(B2,TODAY(),”Y”)
DATEDIF関数の最初のB2は開始日であり、ここには生年月日のセルを指定します。
TODAY関数は今日の日付を返す関数なので、ファイルを開いた日を基準に年齢が更新されます。
最後の”Y”は満年数を求める指定で、誕生日をまだ迎えていない年は年齢を1つ増やしません。
満年齢を求めるなら単純に西暦の差を引くよりDATEDIF関数が適しています。
たとえば生年月日が1992年8月15日で、今日が2026年10月23日なら、計算結果は34になります。
一方で今日が2026年8月14日なら、2026年の誕生日の前なので結果は33です。
単純な引き算でYEAR(TODAY())-YEAR(B2)とすると、誕生日の前でも年齢が増えてしまうことがあります。
そのため、履歴書や人事台帳、会員情報のように年齢の正確さが必要な表ではDATEDIF関数を使いましょう。
数式をC2に入力した後、セル右下の小さな四角形を下へドラッグすると、C3以降にも数式をコピーできます。
これはオートフィルと呼ばれる操作で、B2がB3、B4へ自動的に変わるため、人数が多い名簿でも手入力は不要です。
ただし、生年月日が空欄の行ではDATEDIF関数がエラーを返すことがあります。
未入力行を含む表では、次のようにIF関数を加えて、空欄なら何も表示しない式にすると見やすくなります。
=IF(B2=””,””,DATEDIF(B2,TODAY(),”Y”))
この式では、B2が空欄なら空欄を返し、値が入力されている場合だけ年齢を計算します。
生年月日欄に未来の日付が入るとDATEDIF関数は正しく計算できないため、入力規則で未来日を防ぐ運用も有効です。
年齢の列は数値として扱われるので、年齢順に並べ替えたり、一定年齢以上の人だけをフィルターで抽出したりできます。
【操作のポイント】C2の数式を下へコピーする前に、生年月日がB列にそろっているか確認します。
エクセルで生年月日の表示形式を変更する方法
続いては、生年月日の値を変えずに、和暦や曜日付きの見た目へ変更する方法を確認していきます。
| 元の日付 | 西暦表示 | 和暦表示 |
|---|---|---|
| 1992/8/15 | 1992年8月15日 | 平成4年8月15日 |
セルの書式設定による西暦と和暦の表示
日付を見やすく表示したいだけなら、セルの内容を打ち直す必要はありません。
生年月日が入ったセルを選択し、右クリックからセルの書式設定を開くと、表示形式だけを変更できます。
表示形式タブの分類で日付を選ぶと、2026年10月23日や2026/10/23などの候補が表示されます。
日本語の帳票では、yyyy年m月d日を選ぶと、年と月と日がひと目で区別できる表示になります。
表示形式を変更しても、セル内部の日付データや年齢計算の結果は変わりません。

和暦で表示したい場合は、分類から日付を選び、カレンダーの種類やロケールの候補に和暦があるか確認します。
ユーザー定義を使う場合は、[$-ja-JP-x-gannen]ggge年m月d日のような書式コードを設定する方法もあります。
この書式では令和元年のように元年表示を扱えるため、提出用の書類や社内帳票で和暦が必要なときに便利です。
一方、CSVファイルへ出力する前提のデータでは、和暦表示よりもyyyy/m/dの西暦形式のほうが他のシステムへ渡しやすい傾向があります。
画面上の見やすさと、外部システムとの連携に使う形式は別に考えるとよいでしょう。
日付が#######と表示される場合は、列幅が足りないことが主な原因です。
列見出しの右端をダブルクリックすると、内容に合わせて列幅を自動調整できます。
また、年月日を20260815のような8桁の数字で入力した場合、Excelが数値と認識して日付表示にならないことがあります。
その場合は、DATE関数を使って別セルで日付へ変換するか、元データを区切り付きの形式へ整えます。
見た目を変えるときはセルの書式設定を使います。
値そのものを変える必要はありません。
生年月日列では、入力規則と表示形式をセットで整えることで、表全体の品質を保ちやすくなります。
TEXT関数による文章内の日付表示
セル内に生年月日を文章として表示したい場合は、TEXT関数を使う方法があります。
たとえばB2に生年月日があり、D2に生年月日を含む案内文を作るなら、次の数式を入力します。
=”生年月日は”&TEXT(B2,”yyyy年m月d日”)&”です”
この式では、TEXT関数がB2の日付を指定した書式の文字列へ変換し、その前後の文章と結合します。
計算結果は生年月日は1992年8月15日ですのように表示されます。
TEXT関数の結果は日付ではなく文字列になるため、そのまま日数計算や年齢計算の元データには使わない点に注意が必要です。

和暦の文章を作る場合は、TEXT関数内の書式コードを和暦用に変更します。
たとえば=”生年月日は”&TEXT(B2,”[$-ja-JP-x-gannen]ggge年m月d日”)&”です”のように記述できます。
この方法は、差し込み文書用の一覧やメール文面の下書き、証明書の文言を作る表で役立ちます。
ただし、生年月日が空欄のときには、文章内に意図しない表示が出る場合があります。
空欄行があるなら、IF関数で入力有無を判定してからTEXT関数を実行する構成が安心です。
=IF(B2=””,””,TEXT(B2,”yyyy年m月d日”))
この数式ならB2が空欄の行では何も表示せず、日付がある行だけを文章向けの形式に変換します。
年齢を含む紹介文を作るなら、TEXT関数とDATEDIF関数を結合することも可能です。
たとえば氏名、生年月日、年齢を別々のセルで管理し、文章用の列だけで組み合わせると、元データの修正にも対応しやすくなります。
数式が長くなった場合は、セルをクリックして数式バーで確認すると、引用符やアンパサンドの位置を見直せます。
特に全角の引用符を使うと数式エラーになるため、Excelが入力した半角の引用符を維持しましょう。
【操作のポイント】日付の表示だけを変えるなら書式設定、文章に組み込むならTEXT関数を使い分けます。
生年月日から年齢と誕生日関連の日付を計算する関数
続いては、年齢のほかに、次の誕生日や誕生日までの日数を自動表示する関数について確認していきます。
| 生年月日 | 満年齢 | 次の誕生日 |
|---|---|---|
| 1992/8/15 | 34 | 2027/8/15 |
DATE関数とIF関数による次の誕生日
次の誕生日を表示するには、今年の誕生日がすでに過ぎたかどうかを判断する必要があります。
B2に生年月日がある場合、次の誕生日を求める式として次のように入力できます。
=DATE(YEAR(TODAY())+(DATE(YEAR(TODAY()),MONTH(B2),DAY(B2))<TODAY()),MONTH(B2),DAY(B2))
この式は、今年の月日を使って誕生日を作り、それが今日より前なら翌年の誕生日を返します。
YEAR(TODAY())は今年の年を取り出し、MONTH(B2)とDAY(B2)は生年月日から月と日だけを取り出します。
年だけは今年または翌年へ置き換え、月日だけを生年月日から使う考え方です。
DATE関数の中の比較結果は、今年の誕生日が今日より前ならTRUEとなり、計算上は1として扱われます。
そのため、年に1が加わり、翌年の誕生日が表示されます。
数式を入力したセルを下へオートフィルすれば、各行の生年月日に対応する次回の誕生日が計算されます。
2月29日生まれの人を扱う場合は、平年にDATE関数が3月1日へ繰り上がることがあります。
2月29日生まれの誕生日を2月28日として扱うか、3月1日として扱うかは、社内規定や目的に応じて決める必要があります。
単純な顧客向け通知なら、計算結果を確認して必要に応じて個別対応する運用でもよいでしょう。
誕生日までの日数と年齢の月数表示
次の誕生日まであと何日かを求めたい場合は、次の誕生日の日付から今日の日付を引きます。
仮にD2に次の誕生日が表示されているなら、E2には次の数式を入力します。
=D2-TODAY()
日付同士を引き算すると、Excelでは日数が数値として返ります。
たとえば次の誕生日が10日後なら、結果は10と表示されます。
日数を計算するセルは標準または数値の表示形式にしておくと、日付へ誤表示されません。
年齢を年と月で表示したい場合は、DATEDIF関数を2回使って組み立てます。
=DATEDIF(B2,TODAY(),”Y”)&”歳”&DATEDIF(B2,TODAY(),”YM”)&”か月”
最初のDATEDIF関数は満年齢を返し、2つ目のDATEDIF関数にある”YM”は年数を除いた残りの月数を返します。
たとえば34歳2か月のような表示を作れるため、乳幼児の月齢管理や詳細な年齢区分を確認したい場面で役立ちます。
ただし、この結果は文字列なので、年齢順に並べ替える基準には向きません。
並べ替えや条件付き書式に使う場合は、満年齢の数値列を別に持ち、文章表示の列は補助列として使う方法がおすすめです。
誕生日までの日数を条件付き書式で色分けすれば、誕生日が近い人を視覚的に把握できます。
たとえば日数列を選択し、ホームタブの条件付き書式からセルの強調表示ルールを選び、7以下を設定します。
この設定を行うと、7日以内に誕生日を迎える行だけを目立つ色で確認できます。
日数計算の基準になるTODAY関数は、原則としてブックを再計算した日に更新されます。
共有ファイルを印刷する場合は、印刷日時と年齢の基準日が一致しているかを確認すると、資料の信頼性を保てます。
【操作のポイント】次の誕生日を別列で計算してから日数を引くと、数式を読み返しやすくなります。
生年月日入力と年齢計算で発生しやすいエラー
続いては、生年月日や年齢が正しく表示されないときに確認したい原因と対処法について解説していきます。
| 表示内容 | 主な原因 | 対処 |
|---|---|---|
| #NUM! | 未来の日付や開始日不正 | 日付を確認する |
| 年齢が固定 | TODAY関数を使っていない | 数式を見直す |
文字列の日付と未来日付の確認
DATEDIF関数で#VALUE!や#NUM!が表示されるときは、生年月日セルの内容を最初に確認します。
見た目が1992/8/15でも、先頭にアポストロフィが付いていたり、外部システムから文字列として貼り付けられたりすると、日付計算はできません。
セルを選んでホームタブの表示形式を確認し、標準ではなく日付として認識されているかを見ることが基本です。
文字列の日付を変換する方法として、データタブの区切り位置を利用できます。
対象列を選び、区切り位置を開いて次へ進み、最後の画面で列のデータ形式を日付に設定して完了します。
年月日の並びが年、月、日の場合はYMDを選択し、元データの順序と一致させましょう。
一部のセルだけを直すなら、編集モードにしてEnterキーを押すだけで日付として再認識される場合もあります。
一方、未来の日付を生年月日へ入力すると、開始日が終了日より後になるためDATEDIF関数はエラーを返します。
誤って今日以降の日付が入っていないか、入力担当者の打ち間違いがないかを確認してください。
入力規則を設定するなら、生年月日列を選択し、データタブのデータの入力規則で日付を選びます。
終了日をTODAY関数と同じ今日までにすることで、未来の日付の入力を防げます。
生年月日の年が二桁だけになっているデータは、Excelが意図しない世紀と解釈することがあります。
年は必ず四桁で入力し、1926年と2026年を取り違えない運用にすることが重要です。
エラーが出たら、数式より先に生年月日のセルが本当の日付か確認します。
空欄行と基準日の管理
名簿では、生年月日が未確認の人や、入力途中の空欄行が混在することがあります。
そのままDATEDIF関数をコピーすると、空欄に対してエラー表示が並び、表が読みにくくなります。
この場合は、IF関数で生年月日が空欄かどうかを判定してから計算します。
=IF(B2=””,””,DATEDIF(B2,TODAY(),”Y”))
この式はB2が空欄なら空文字を返し、入力済みなら年齢だけを表示します。
空欄をゼロ歳として扱わないことも重要です。
ゼロは実際に0歳のデータと区別できなくなるため、未入力は空欄または確認中などの別管理にします。
年齢を今日ではなく特定の基準日で計算したいこともあります。
たとえば2026年4月1日時点の年齢を固定して一覧にしたい場合、TODAY関数の代わりにDATE(2026,4,1)を使います。
=DATEDIF(B2,DATE(2026,4,1),”Y”)
この方式なら、後日にファイルを開いても、2026年4月1日時点の年齢が変わりません。
採用応募者の年齢や年度別の対象者判定では、いつの時点の年齢なのかを見出しに明記すると誤解を防げます。
基準日を毎回数式へ書き込むより、たとえばF1に基準日を入力し、DATEDIF(B2,$F$1,”Y”)のように参照する方法も便利です。
ドル記号を付けた$F$1は絶対参照となり、数式を下へコピーしても基準日のセルが変わりません。
この構成なら、F1の日付を変更するだけで、名簿全体の年齢を任意の時点へ更新できます。
印刷用の資料では、年齢列の見出しを基準日現在の年齢とするなど、データの意味が伝わる表記にしましょう。
【操作のポイント】今日時点の年齢はTODAY関数、特定日基準の年齢はDATE関数または基準日セルを使います。
まとめ エクセルで年齢・日付を自動表示する生年月日の入力と計算方法
Excelで生年月日を扱うときは、まず日付として正しく入力し、表示形式で見た目を整えることが基本です。
満年齢は=DATEDIF(B2,TODAY(),”Y”)で計算でき、誕生日を迎える前でも正しい年齢を表示できます。
空欄がある名簿ではIF関数を組み合わせると、不要なエラーを防げます。
和暦や年月日付きの文章を表示したいときは、セルの書式設定やTEXT関数を目的に応じて使い分けましょう。
次の誕生日と残り日数も別列で管理すると、案内や対象者抽出に活用しやすくなります。
また、年齢の基準日が決まっている業務ではTODAY関数だけに頼らず、DATE関数や基準日セルを使って計算時点を明確にすることが大切です。
生年月日を正しい日付データとして保存し、数式をオートフィルで展開すれば、更新しやすく信頼できるExcel台帳を作れます。