スプレッドシートのYEARFRAC関数の使い方|年単位の期間を小数で計算

スポンサーリンク

「入社してから何年何ヶ月か、ざっくり年数で出せないかな?」。勤続年数や契約期間を管理していると、こんな場面が出てきますよね。

DATEDIF関数を使えば「6年」のような整数は出せます。でも「6.46年」のように端数まで含めた正確な年数がほしい場面もあります。

GoogleスプレッドシートのYEARFRAC関数なら、2つの日付の間隔を年単位の小数で一発計算できます。

この記事では基本の書き方から、勤続年数や契約残期間の計算、DATEDIFとの使い分けまで、実務で使えるテクニックをまとめて紹介します。

YEARFRAC関数とは?スプレッドシートで年単位の期間を計算する関数

YEARFRAC関数(読み方: イヤーフラック関数)は、2つの日付の間隔が年単位で何年にあたるかを小数で返す関数です。

名前は「year(年)」と「fraction(端数・割合)」を組み合わせた造語です。

たとえば「2020/4/1」から「2026/9/15」までの期間をYEARFRAC関数で求めると「6.4583…」のような値が返ります。つまり約6年5ヶ月半ということです。

DATEDIF関数の「Y」単位だと「6」(整数)しか返りませんが、YEARFRAC関数なら端数まで含めた正確な年数がわかります。年齢のような「満何歳」ではなく、勤続年数や契約期間のように「端数も含めた年数」がほしいときに重宝しますよ。

NOTE

YEARFRAC関数はGoogleスプレッドシートとExcel(全バージョン)の両方で使えます。構文も同じなので、ファイルを変換しても数式はそのまま動きますよ。

YEARFRAC関数の書き方|構文と引数

基本構文

=YEARFRAC(開始日, 終了日, [基準])

カッコの中に「開始日」「終了日」の2つを入れます。3つ目の「基準」は省略できます。

引数の詳細

引数必須/任意説明
開始日必須期間の開始となる日付
終了日必須期間の終了となる日付
基準任意日数の計算方法を指定する数値(0〜4、省略時は0)

開始日が終了日より後でもエラーにはなりません。ただし結果がマイナスになるので、通常は開始日を終了日より前に指定してください。

基準(日数計算方法)の種類

第3引数の「基準」は、1年の日数をどう計算するかを指定します。金融計算で使われるオプションですが、一般的な実務では省略して問題ありません

基準計算方法1年の日数
0(省略時)米国方式(NASD 30/360)各月30日 / 年360日
1実日数 / 実日数うるう年は366日、それ以外は365日
2実日数 / 360日年360日として計算
3実日数 / 365日年365日として計算(うるう年も同じ)
4ヨーロッパ方式(30/360)各月30日 / 年360日

TIP

勤続年数や契約期間など「正確な暦日ベース」で計算したい場合は、基準を「1」に指定するのがおすすめです。省略時(0)は各月を30日とみなす金融向けの計算方法なので、実日数とわずかにズレることがあります。

YEARFRAC関数の基本的な使い方

セル参照で年数を求める

A2に開始日「2020/4/1」、B2に終了日「2026/9/15」が入っているとします。

=YEARFRAC(A2, B2)

結果は「6.458333…」です。約6.46年、つまり6年5ヶ月半の期間があるとわかります。

引数はセル参照で指定するのが基本です。日付データを変更するだけで結果が自動更新されますよ。

基準を指定して実日数ベースで計算する

デフォルト(基準0)は各月を30日とみなす計算です。実際の暦日に基づいて正確に計算したい場合は、基準に「1」を指定します。

=YEARFRAC(A2, B2, 1)

結果は「6.460…」です。基準0のときと値がわずかに異なります。これは、基準0が「すべての月を30日」と仮定するのに対し、基準1は実際の日数(31日の月は31日、うるう年は366日)で計算するためです。

DATE関数と組み合わせる

年・月・日がバラバラのセルに入っている場合は、DATE関数(年・月・日から日付を作る関数)を組み合わせます。

=YEARFRAC(DATE(2020,4,1), DATE(2026,9,15), 1)

DATE関数で日付データを作ってからYEARFRACに渡す形です。

実務で使えるYEARFRAC関数の活用例

勤続年数を小数で自動計算する

人事名簿で入社日がA2に入っているとします。勤続年数を小数で表示してみましょう。

=YEARFRAC(A2, TODAY(), 1)

TODAY関数は今日の日付を返す関数です。入社日と今日の差を年単位で求めています。

A2が「2020/4/1」で今日が「2026/3/21」なら、結果は「5.971…」です。約5年11ヶ月半ということですね。

整数部分だけ取り出したい場合は、INT関数で囲みます。

=INT(YEARFRAC(A2, TODAY(), 1))

結果は「5」です。端数を切り捨てた「満何年」が返ります。

TIP

「X年Yヶ月」形式で表示したいなら、DATEDIF関数のほうが向いています。YEARFRACは「6.46年」のような小数値、DATEDIFは「6年5ヶ月」のような整数値と、用途に応じて使い分けてください。

契約の残り期間を年単位で求める

契約終了日がB2に入っているとして、残り期間を年単位で計算してみましょう。

=YEARFRAC(TODAY(), B2, 1)

B2が「2028/3/31」なら、結果は「2.027…」です。残り約2.0年とわかります。

「残り1年未満になったら更新手続きを始める」といった判定にも使えます。

=IF(YEARFRAC(TODAY(), B2, 1) < 1, "更新手続き必要", "")

年齢に端数を含めて計算する

保険の年齢計算のように、端数を含めた年齢が必要な場面もあります。

=YEARFRAC(A2, TODAY(), 1)

A2が「1990/5/20」で今日が「2026/3/21」なら、結果は「35.838…」です。35歳と約10ヶ月ということですね。

満年齢(整数)だけでよければDATEDIF関数の「Y」単位を使いましょう。端数まで必要なケースでYEARFRAC関数が活躍します。

YEARFRAC関数のエラーと対処法

#VALUE!エラー(日付が不正な場合)

YEARFRAC関数に渡した値が正しい日付データになっていないと、#VALUE!エラーが発生します。

よくある原因は次の3つです。

  • セルに日付が「文字列」として入力されている
  • 全角数字が混じっている(例: 「2020/4/1」)
  • 存在しない日付を指定している(例: 「2020/2/30」)

対処法は、セルの表示形式を「日付」に変更するか、DATE関数で日付データを作り直すことです。

=YEARFRAC(DATE(2020,4,1), DATE(2026,9,15), 1)

DATE関数を経由すれば、確実に正しい日付データとして処理されます。

#NUM!エラー(基準の値が不正な場合)

第3引数の「基準」に0〜4以外の値を指定すると、#NUM!エラーが発生します。

=YEARFRAC(A2, B2, 5)   → #NUM!

基準は0・1・2・3・4の5種類だけです。それ以外の数値を指定していないか確認してください。

IFERRORで安全にエラーを回避する

データに不備がある行でもエラー表示を防ぎたい場合は、IFERROR関数(エラーのとき代替値を返す関数)で囲みます。

=IFERROR(YEARFRAC(A2, TODAY(), 1), "")

A2が空欄だったり不正な日付だったりしても、エラーの代わりに空白が表示されます。名簿のように大量の行がある場面ではIFERROR関数との組み合わせがおすすめです。

DATEDIF関数との違い・使い分け

YEARFRAC関数とDATEDIF関数は、どちらも2つの日付の間隔を求める関数です。大きな違いは「戻り値の形式」です。

項目YEARFRAC関数DATEDIF関数
戻り値年数の小数(例: 6.46)整数(例: 6)
端数の扱い小数で含まれる切り捨てられる
単位の指定年のみ(自動)Y/M/D/YM/MD/YDの6種類
基準の指定あり(0〜4)なし
引数の順序開始日, 終了日開始日, 終了日
逆順のときマイナスの値を返す#NUM!エラー
主な用途期間の小数表示、金融計算年齢計算、X年Yヶ月表示

使い分けの判断基準

「結局どちらを使えばいいの?」と迷ったときは、次の表で判断してみてください。

やりたいことおすすめの関数数式の例
勤続年数を「6.5年」のように小数で表示YEARFRAC=YEARFRAC(A2, TODAY(), 1)
勤続年数を「6年5ヶ月」のように表示DATEDIFY + YMの組み合わせ
年齢を満年齢(整数)で求めるDATEDIF=DATEDIF(A2, TODAY(), "Y")
契約残期間が1年未満かどうか判定するYEARFRAC=YEARFRAC(TODAY(), B2, 1) < 1
2つの日付の日数だけ知りたいDAYS関数=DAYS(B2, A2)

小数の年数がほしいならYEARFRAC、整数の年・月・日で分解したいならDATEDIF、日数だけならDAYSと覚えておけば迷いません。

まとめ

YEARFRAC関数は、2つの日付の間隔を年単位の小数で返す関数です。

ポイントを整理します。

  • 構文は =YEARFRAC(開始日, 終了日, [基準]) の2〜3引数
  • 戻り値は小数(例: 6.46年)。端数まで含めた正確な年数がわかる
  • 基準は省略可。実日数ベースで計算したいなら「1」を指定
  • 勤続年数は =YEARFRAC(入社日, TODAY(), 1) で自動計算できる
  • 整数の年数がほしいならINT関数で囲む
  • 「X年Yヶ月」形式で表示したい場合はDATEDIF関数を使う
場面使う関数
年数を小数で知りたいYEARFRAC関数
年・月・日の整数で知りたいDATEDIF関数
日数だけ知りたいDAYS関数
今日の日付を基準にしたいTODAY関数と組み合わせ

まずは =YEARFRAC(A2, TODAY(), 1) で勤続年数の計算から試してみてください。

タイトルとURLをコピーしました