illust_pc_excel_title2

Excel

【Excel関数】生年月日から年齢を計算する方法

生年月日と一言でいっても数値、日付、文字列といろんな形式があります。その形式ごとに、正攻法から裏技までまとめて紹介します。式をコピーしてそのまま使えるようになっています。なお、年齢の算出基準日は今日時点(Today()関数で表示される日付)です。年齢から年代に変換したい場合はこちらを参考にしてください。

1.表示形式

(知っている人は読み飛ばしてください。)生年月日と一言でいっても[数値]、[文字列]、[日付]といろんな形式があります。表示のされ方を確認しておきましょう。

1format

数値の場合は、セル内で右寄せになっています。CSVファイルなどをExcelで開くと自動的に変換されこの表示形式になります。数値になっている場合は"先頭の0(ゼロ)がなくなり桁数が変化する"など考慮した処理が必要になります。

日付の場合は、年・月・日の間に"/"(スラッシュ)がはさまれた状態で1981/02/02という表示になります。表示形式の設定によって0(ゼロ)が省略され1981/2/2となる場合もあります。日付の場合は桁が異なっても、年(YEAR)・月(MONTH)・日(DAY)とデータ自体が意味を持っているので処理は容易になります。

文字列の場合は、セル内で左寄せになっています。通常、生年月日のデフォルト値は8桁です。文字列の場合は先頭が0(ゼロ)であってもその0が残ったまま8桁になっているので、桁で制御する処理がポイントになります。

 

Excelでデータを扱う場合、表示形式(データ型)によって処理の仕方が異なってくるので注意が必要です。データ型それぞれでの取り扱いポイントについては、また別の機会に紹介します。

それでは、[生年月日]から[年齢]を計算する方法を表示形式ごとに紹介していきます。特に、処理の違いがイメージできるように7桁の生年月日もイメージに登場させていますので参考にしてください。

2.生年月日が[数値]の場合

生年月日が1981年2月2日の場合、1981万202と読み取って処理をしていくことになります。

 2-1.正攻法

【おすすめ度】★★☆
【速さ】     ★★☆
【正確性】    ★★☆

=DATEDIF((INT([生年月日]/10000)&"/"&RIGHT(INT([生年月日]/100),2)&"/"&RIGHT([生年月日],2)),TODAY(),"Y")

数値になっている生年月日を日付に変換し(B列)、DATEDIF関数を用いて今日(TODAY)との差分を年表示("Y")して算出しています。年齢が持つ意味と、関数の持つ意味が一致している正攻法の処理となります。

日付で処理をする場合の注意点!Excelの日付で認識できる最も古い日付は1900/1/1なので、カーネルサンダースや菅原道真など1900年1月1日よりも前に出生した人の年齢が計算できないです。すべての生年月日を計算できないので【正確性】は2つ★。2-3.裏技(2)を使うとどんな年齢も計算できます。

 2-2.裏技(1) INT関数

【おすすめ度】★★☆
【速さ】   ★★★
【正確性】  ★☆☆

=YEAR(TODAY())-INT([生年月日]/10000)

1-2 int

誕生日の到来を判定せずに年だけで計算(今年の誕生日が到来として)をしています。システム開発や事務での使用はオススメしませんが、統計分析の場合には十分に使えます。スピード勝負の時に使えるので引き出しの一つにしておきましょう。

 2-3.裏技(2) INT関数+α

【おすすめ度】★★★
【速さ】   ★☆☆
【正確性】  ★★★

=(YEAR(TODAY())-INT([生年月日]/10000))+IF(([生年月日]-INT([生年月日]/10000)*10000)<=(MONTH(TODAY())*100+
DAY(TODAY())),0,-1)

1-3INT

裏技(1)よりスピードが落ちますが、誕生日が到来しているかどうかを判定した正しい年齢です。また、日付を用いていいないため1900/1/1より前の生年月日の場合でも算出することができます。

スポンサーリンク

3.生年月日が[日付]の場合

これはもう至って簡単です。DATEDIF関数で計算するだけ。
【おすすめ度】★★★
【速さ】   ★★★
【正確性】  ★★☆

=DATEDIF([生年月日],TODAY(),"Y")

2-1 日付型

4.生年月日が[文字列]の場合

基本的には[数値]で紹介した内容と同じです。日付に変換する正攻法と、文字列そのままで処理する裏技をご紹介。

 4-1.正攻法

【おすすめ度】★★☆
【速さ】   ★★☆
【正確性】  ★★☆

=DATEDIF((LEFT([生年月日],4)&"/"&MID([生年月日],5,2)&"/"&RIGHT([生年月日],2)),TODAY(),"Y")

 

数値の場合と考え方は同じです。桁数が固定されているためLEFT、MID、RIGHTを用いて簡単に変換できます。年齢が持つ意味と、関数の持つ意味が一致している正攻法の処理となります。

 4-2.裏技

【おすすめ度】★★☆
【速さ】   ★★★
【正確性】  ★☆☆

=YEAR(TODAY())-Left([生年月日],4)

4-2裏技

数値の場合の裏技(1)と同様の処理です。ここでのポイントは、LEFT関数で抽出した文字列の"年"をそのまま引き算に使用している点です。Excelの場合、式の文脈を読み取って数値以外のデータを数値として自動変換して計算してくれる機能があります。

5.最後に

生年月日から年齢を算出する方法を紹介しました。年齢を年代に変換する方法も紹介していますので参考にしてみてください。この記事が生産性向上につながり、成長の一助になれたら「いいねっ!」

スポンサーリンク
スポンサーリンク

関連記事

  1. カレンダー

    Excel

    マクロを使わない自動罫線のExcelカレンダー(2018年度/2019年度)

    個人での予定管理から、プロジェクトのタスク管理まで、カレンダーはあらゆ…

  2. vlookup応用

    Excel

    【Excel関数】vlookup関数の使い方<応用編>

    vlookup関数は是非使いこなしてほしい関数の一つ。全4パターンの応…

  3. not_dateadd

    Excel

    【Excel】dateaddが使えない!?VBAを使わずできる日付計算

    dateadd関数はVBAでのみ使用できる関数で、通常のExcel関数…

  4. サムネイル折線

    Excel

    【Excel】折れ線グラフを塗りつぶして見やすくする作り方

    サムネイルのグラフのような、折れ線グラフを塗りつぶして効果的に魅せる方…

  5. vlookupサムネ

    Excel

    【Excel関数】応用の前にまずは基本!vlookupの使い方

    vlookup関数は、別シートや別表のデータを参照できる関数です。でも…

  6. Excel

    【Excel関数】住所情報から都道府県を抽出する方法

    "東京都千代田区1-1-1"のように連結した住所情報から都道府県だけを…

スポンサーリンク




特集

  1. 折れ線グラフ特集1
  2. 特集働き方改革サムネ
  3. SC特集サムネ

スポンサーリンク




仕事効率アップ系記事

  1. ショートカットサムネ
  2. 働き方改革-職場
  3. Keyboad
  4. Altキーサムネ

スキルアップ系記事

  1. vlookup応用
  2. enphasis_top
  3. 円グラフ色使い
  4. 体重計
  5. graph

スポンサーリンク




ピックアップ記事

  1. プレミアムフライデー
  2. プレミアムフライデー
  3. 宝くじ
  4. 管理職マネジャー
  5. analysis
  1. 特集働き方改革サムネ

    Column

    【特集】「働き方改革」を独り歩きさせない!「働き方改革」の実現に向けて
  2. 折れ線グラフ特集1

    PC

    【特集】"使い方"では足りない!「折れ線グラフ」の"使いこなし方"
  3. SC特集サムネ

    PC

    【特集】ショートカットキーで仕事効率化!働き方改革の小さな一歩👣…
PAGE TOP