Excel一覧 Excel関数 年齢計算 計算・数値処理

【Excel】「yyyymmdd」形式から年齢を計算する方法【関数だけで簡単変換】

CSVデータや基幹システムから出力されたファイルをExcelで開いたとき、
生年月日が「19870512」のような yyyymmdd形式 になっていて、
そのままでは年齢計算ができず困った経験はありませんか。

一見すると日付に見えるこの値も、Excel上では
「ただの文字列」や「数値」
として扱われていることが多く、通常の年齢計算式が正しく動かない原因になります。

本記事では、
・yyyymmdd形式が年齢計算できない理由
・関数だけで安全に日付へ変換する方法
・実務でつまずきやすい注意点
を、背景から順を追って解説します。

✅ 「yyyymmdd」形式が年齢計算できない理由

この形式の最大の落とし穴は、
Excelが日付として認識していない
という点にあります。

見た目が日付でも、中身は日付ではありません。

・文字列・数値として扱われている

「19870512」は、Excelから見ると
・単なる数値
・または文字列
です。

そのため、DATEDIF関数やYEAR関数を使っても、
正しい年齢が計算できなかったり、エラーになったりします。

・表示形式を変えても解決しない

セルの表示形式を「日付」に変更しても、
中身が日付に変換されていなければ意味はありません。

この違いを理解していないと、
「なぜ計算できないのか分からない」
状態に陥りやすくなります。


✅ 関数だけで「yyyymmdd」を日付に変換する方法

まずは、yyyymmdd形式を正しい日付データに変換する必要があります。

・LEFT / MID / RIGHT を使う基本パターン

A2セルに「yyyymmdd」が入っている場合、
以下のように分解します。

  • 年:LEFT(A2,4)
  • 月:MID(A2,5,2)
  • 日:RIGHT(A2,2)

これをDATE関数でまとめることで、
Excelが認識できる日付になります。

=DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2))

・なぜこの方法が安全なのか

・関数の動きが分かりやすい
・文字列/数値どちらでも対応できる
・環境差が出にくい

実務で扱うデータほど、
「誰が見ても理解できる式」であることが重要です。


✅ 日付に変換した後の年齢計算方法

日付に変換できたら、年齢計算自体は難しくありません。

・DATEDIF関数を使う場合

変換後の日付セルを使って、

=DATEDIF(生年月日, 基準日, "Y")

とすれば、満年齢が求められます。

ただし、DATEDIF関数は一覧に表示されず、
知らない人には分かりにくい点に注意が必要です。


✅ DATEDIFを使わない年齢計算の考え方

実務では、DATEDIFを使わない方法を選ぶケースも少なくありません。

・YEAR関数とIF関数を使う方法

考え方は次の通りです。

  1. 基準年 − 生まれた年
  2. 誕生日を迎えていなければ −1

式にすると、

=YEAR(基準日) - YEAR(生年月日)
 - IF(TEXT(基準日,"MMDD") < TEXT(生年月日,"MMDD"), 1, 0)

となります。

・この方法が実務向きな理由

・使っている関数がすべて一般的
・計算ロジックを説明しやすい
・引き継ぎ時に困らない

「動くかどうか」だけでなく、
「理解されるかどうか」も重要な判断軸です。


✅ yyyymmdd形式でよくある実務トラブル

・先頭の0が消える

「19990305」が
「199935」
のように見えるケースは、文字列管理ができていないサインです。

CSV取り込み時点で、
文字列として扱うかどうか
を意識する必要があります。

yyyymmdd形式のデータで先頭の0が消える問題は、
年齢計算以前に「Excelが数値として扱っている」ことが原因です。

先頭の0を含めて正しく表示・管理する方法や、
ゼロが消えないようにする実務上の対策については、
【Excel】「0」を正しく表示する方法【先頭の0・ゼロのみ・非表示回避など実用テクニック】
で詳しく解説しています。

・基準日がTODAY関数になっている

年齢を自動更新したい場合は便利ですが、
帳票用途では「いつ時点の年齢か分からない」
Excelになりがちです。

基準日をセルで明示する設計も検討しましょう。

TODAY関数を使えば、年齢を自動で更新することができますが、
基準日が日々変わるという特性を理解していないと、
「いつ時点の年齢なのか分からない」Excelになりがちです。

TODAY関数を使った年齢計算の仕組みや、
自動更新が向いているケース・向いていないケースについては、
【Excel】TODAY関数を使って年齢を自動計算する方法【生年月日からカンタン算出】
で詳しく解説しています。


✅ VBAを使う場合の考え方(補足)

関数だけで対応できますが、
処理件数が多い場合や、
毎回同じ変換を繰り返す場合は、VBAでの一括変換も選択肢になります。

VBA側で
・yyyymmdd → 日付変換
・基準日を統一
しておくことで、
関数をシンプルに保つことも可能です。


 

✅ まとめ:「yyyymmdd」形式でも年齢計算は可能

  • yyyymmdd形式は、そのままでは日付ではない
  • まずDATE関数で正しい日付に変換する
  • 変換後に年齢計算を行うのが基本
  • DATEDIFに頼らない設計も実務では有効

yyyymmdd形式のデータは、
「変換してから使う」
という一手間をかけるだけで、Excelは格段に扱いやすくなります。

年齢計算ができない原因を
「関数が悪い」と思う前に、
データの正体を確認する視点を持つことが、
Excelを安全に使い続けるコツです。

    -Excel一覧, Excel関数, 年齢計算, 計算・数値処理