ADVERTISEMENT

【Googleスプレッドシート】YEARFRAC関数で2日付間の年数を小数で計算!年齢計算の精度向上

【Googleスプレッドシート】YEARFRAC関数で2日付間の年数を小数で計算!年齢計算の精度向上
🛡️ 超解決

年齢や経過年数を計算したいとき、単純に「日付の差÷365」ではうるう年の影響で誤差が生じることがあります。そんなときに役立つのがYEARFRAC関数です。この関数を使うと、2つの日付の間の年数を小数で正確に計算できます。本記事では、YEARFRAC関数の基本的な使い方から、年齢計算への応用、引数の指定による精度の違いまでを詳しく解説します。

【要点】YEARFRAC関数で正確な年数計算を実現する方法

  • YEARFRAC関数の構文: =YEARFRAC(開始日, 終了日, [基準]) で2日付間の年数を小数で返します。
  • 第3引数(基準)の指定: 0(米国基準NASD)や1(実際の日数/実際の日数)など、計算精度を制御できます。
  • 年齢計算への応用: TODAY関数と組み合わせることで、現在の年齢を小数点以下まで自動計算できます。

ADVERTISEMENT

YEARFRAC関数が2日付間の年数を小数で返す仕組み

YEARFRAC関数は、指定した2つの日付の間の日数を、1年を何日とみなすかの基準に従って年数に変換します。単純に日数を365で割るのではなく、うるう年や月の日数を考慮した厳密な計算が可能です。関数の書式は「=YEARFRAC(開始日, 終了日, [基準])」です。第3引数の「基準」には0から4までの数値を指定でき、それぞれ異なる日数計算ルールを適用します。例えば基準「1」は実際の日数をそのまま使い、1年を実際の日数(うるう年なら366)で割るため、最も現実に近い値が得られます。この関数は金融分野の金利計算や、年齢の正確な把握が必要な場面で重宝します。

YEARFRAC関数の計算結果は小数で返されます。例えば2023年1月1日から2024年1月1日までの場合、基準によって0.9973や1.0000など微妙に異なる値になります。これは年数の計算方法の違いによるもので、どの基準を使うかは用途に応じて選択する必要があります。後ほど各基準の違いを比較表で詳しく説明します。

YEARFRAC関数で年数計算を行う基本手順

ここでは、YEARFRAC関数を使って2つの日付間の年数を計算する具体的な手順を解説します。併せて、年齢計算への応用例も紹介します。

基本的な年数計算の手順

  1. 開始日と終了日をセルに入力する
    例として、A1セルに開始日(2020/1/1)、B1セルに終了日(2024/6/15)を入力します。日付はシリアル値として認識される形式であれば何でも構いません。
  2. YEARFRAC関数を入力する
    結果を表示したいセルに「=YEARFRAC(A1, B1, 1)」と入力します。第3引数に1を指定することで、実際の日数ベースで計算します。
  3. 計算結果を確認する
    セルには約4.4521という値が表示されます。これは4年と約0.4521年(約165日)という意味です。書式を「数値」にしておくと小数で表示されます。

現在の年齢を自動計算する手順

  1. 生年月日をセルに入力する
    例として、A1セルに生年月日(1990/5/20)を入力します。
  2. TODAY関数と組み合わせる
    年齢を表示するセルに「=INT(YEARFRAC(A1, TODAY(), 1))」と入力します。INT関数で小数点以下を切り捨て、満年齢を整数で表示します。小数を含む正確な年齢が必要なら「=YEARFRAC(A1, TODAY(), 1)」のままでも構いません。
  3. 結果を確認する
    今日の日付に応じて年齢が自動更新されます。INT関数を使うことで、誕生日が来るまでは年齢が上がらない正確な満年齢が計算できます。

YEARFRAC関数を使うときの注意点と精度の落とし穴

YEARFRAC関数は便利ですが、第3引数の基準によって結果が変わることを理解しておく必要があります。また、日付のシリアル値や日付の形式にも注意が必要です。以下に主な注意点をまとめます。

基準(第3引数)の違いで結果が変わる

YEARFRAC関数の第3引数には0から4までの数値を指定できます。それぞれ計算ルールが異なるため、同じ日付の組み合わせでも異なる結果が得られます。特に金融計算では正しい基準を選ばないと金利計算に誤差が生じます。例えば、日本の年齢計算では通常「実際の日数/365」を使うことが多いですが、米国では「30/360」方式(基準0)が一般的です。自分の用途に合った基準を選びましょう。

日付が文字列として入力されているとエラーになる

YEARFRAC関数の引数には日付シリアル値が必要です。日付が「2024/6/15」のように文字列として入力されている場合、関数は正しく認識できず「#VALUE!」エラーが発生します。日付は必ずDATE関数や日付形式のセル参照で指定するか、DATEVALUE関数で変換してから使いましょう。

終了日が開始日より前だと負の値が返される

YEARFRAC関数は、終了日が開始日より前の場合、負の年数を返します。これはエラーではありませんが、意図しない結果になる可能性があります。年齢計算では開始日(生年月日)と終了日(今日)の順序を間違えないように注意してください。もし逆転してしまった場合は、ABS関数で絶対値を取るか、日付の順序を入れ替えましょう。

ADVERTISEMENT

YEARFRAC関数の第3引数(基準)の比較

第3引数に指定する基準によって計算精度が変わります。以下の表で各基準の特徴を比較します。

基準値 計算ルール 特徴
0 米国基準(NASD): 30日/360日 すべての月を30日、1年を360日とみなす。金融商品でよく使われる。
1 実際の日数/実際の日数 実際の日数と、うるう年を考慮した1年の日数で計算。最も正確。
2 実際の日数/360 実際の日数を360日で割る。欧州の金融市場で使用。
3 実際の日数/365 実際の日数を365日で割る。うるう年を考慮しない簡易計算。
4 欧州基準: 30/360 基準0と似ているが、月末の扱いが異なる。欧州の債券で使用。

年齢計算の場合は、うるう年を正しく考慮したいなら基準1がおすすめです。簡易的に年齢を求めたい場合は基準3でも問題ありません。金融計算では、契約内容に応じた基準を選択する必要があります。

まとめ

YEARFRAC関数を使えば、2つの日付間の年数を小数点以下まで正確に計算できます。特に年齢計算では、INT関数と組み合わせることで満年齢を自動更新できるようになります。第3引数の基準を適切に選ぶことで、うるう年の影響を考慮した高精度な計算が可能です。ぜひ実際のシートで試してみてください。応用例として、DATEDIF関数と組み合わせると、年月日を個別に取り出すこともできます。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。