生年月日と一言でいっても数値、日付、文字列といろんな形式があります。その形式ごとに、正攻法から裏技までまとめて紹介します。式をコピーしてそのまま使えるようになっています。なお、年齢の算出基準日は今日時点(Today()関数で表示される日付)です。年齢から年代に変換したい場合はこちらを参考にしてください。
目次
1.表示形式
(知っている人は読み飛ばしてください。)生年月日と一言でいっても[数値]、[文字列]、[日付]といろんな形式があります。表示のされ方を確認しておきましょう。
数値の場合は、セル内で右寄せになっています。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)
誕生日の到来を判定せずに年だけで計算(今年の誕生日が到来として)をしています。システム開発や事務での使用はオススメしませんが、統計分析の場合には十分に使えます。スピード勝負の時に使えるので引き出しの一つにしておきましょう。
2-3.裏技(2) INT関数+α
【おすすめ度】★★★
【速さ】 ★☆☆
【正確性】 ★★★
=(YEAR(TODAY())-INT([生年月日]/10000))+IF(([生年月日]-INT([生年月日]/10000)*10000)<=(MONTH(TODAY())*100+
DAY(TODAY())),0,-1)
裏技(1)よりスピードが落ちますが、誕生日が到来しているかどうかを判定した正しい年齢です。また、日付を用いていいないため1900/1/1より前の生年月日の場合でも算出することができます。
3.生年月日が[日付]の場合
これはもう至って簡単です。DATEDIF関数で計算するだけ。
【おすすめ度】★★★
【速さ】 ★★★
【正確性】 ★★☆
=DATEDIF([生年月日],TODAY(),"Y")
4.生年月日が[文字列]の場合
基本的には[数値]で紹介した内容と同じです。日付に変換する正攻法と、文字列そのままで処理する裏技をご紹介。
4-1.正攻法
【おすすめ度】★★☆
【速さ】 ★★☆
【正確性】 ★★☆
=DATEDIF((LEFT([生年月日],4)&"/"&MID([生年月日],5,2)&"/"&RIGHT([生年月日],2)),TODAY(),"Y")
数値の場合と考え方は同じです。桁数が固定されているためLEFT、MID、RIGHTを用いて簡単に変換できます。年齢が持つ意味と、関数の持つ意味が一致している正攻法の処理となります。
4-2.裏技
【おすすめ度】★★☆
【速さ】 ★★★
【正確性】 ★☆☆
=YEAR(TODAY())-Left([生年月日],4)
数値の場合の裏技(1)と同様の処理です。ここでのポイントは、LEFT関数で抽出した文字列の"年"をそのまま引き算に使用している点です。Excelの場合、式の文脈を読み取って数値以外のデータを数値として自動変換して計算してくれる機能があります。
5.最後に
生年月日から年齢を算出する方法を紹介しました。年齢を年代に変換する方法も紹介していますので参考にしてみてください。この記事が生産性向上につながり、成長の一助になれたら「いいねっ!」