ExcelのYEARFRAC関数の使い方|期間を年単位の小数で計算

スポンサーリンク

「利息の日割り計算をしたいのに、期間を年単位の小数で出す方法がわからない」。経理や人事の業務で、こんな場面に遭遇したことはありませんか。

単純に日数を365で割る方法もあります。でもうるう年や月ごとの日数の違いを考えると、正確さに不安が残りますよね。

ExcelのYEARFRAC関数を使えば、2つの日付の間隔を年単位の小数で一発計算できます。この記事では基本の書き方から基準引数5種の違いまで解説。利息計算や勤続年数の求め方、エラー対処法も紹介します。

ExcelのYEARFRAC関数とは

YEARFRAC関数(読み方: イヤーフラクション)は、2つの日付の間隔が1年間に占める割合を小数で返す関数です。

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

たとえば2024/1/1から2024/7/1までの期間をYEARFRAC関数で求めると、基準によって「0.5」や「0.4973…」のような値が返ります。つまり約半年ということですね。

DATEDIF関数だと「0」(1年未満は切り捨て)しか返りません。YEARFRAC関数なら端数まで含めた正確な年数がわかるので、利息の日割り計算や勤続年数の端数表示に重宝しますよ。

対応バージョン: Excel 2007以降のすべてのバージョン(Microsoft 365含む)で使用できます。

YEARFRAC関数の使い方(構文・引数)

基本構文

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

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

引数の一覧

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

開始日・終了日にはセル参照、DATE関数、日付の文字列を指定できます。

基準(第3引数)の違いを比較

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

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

同じ日付ペア(2024/1/1〜2024/7/1)で基準ごとの結果を比較してみましょう。

基準数式結果
0=YEARFRAC("2024/1/1","2024/7/1",0)0.5000
1=YEARFRAC("2024/1/1","2024/7/1",1)0.4973
2=YEARFRAC("2024/1/1","2024/7/1",2)0.5056
3=YEARFRAC("2024/1/1","2024/7/1",3)0.4986
4=YEARFRAC("2024/1/1","2024/7/1",4)0.5000

基準0と4は「各月30日」とみなすので、同じ0.5になります。基準1は実際の日数(182日÷366日)で計算するため、わずかに異なる値です。

使い分けのコツ: 勤続年数や契約期間など暦日ベースの計算には基準「1」がおすすめです。省略時の基準0は金融向けの計算方法なので、実日数とわずかにズレることがありますよ。

YEARFRAC関数の使用例

利息の日割り計算

年利3%のローンで、2024/4/1から2024/9/30までの利息を日割りで計算してみましょう。元本は100万円とします。

=1000000 * 0.03 * YEARFRAC("2024/4/1","2024/9/30",1)

YEARFRAC関数が期間を年単位(0.5年)で返します。これに元本と年利を掛けるだけで日割り利息が求められます。結果は15,000円です。

日数を手動で数えて365で割る方法より、はるかにシンプルですよね。

勤続年数を端数付きで表示

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

=YEARFRAC(A2, TODAY(), 1)

TODAY関数(今日の日付を返す関数)と組み合わせると、毎日自動で更新されます。A2が「2020/4/1」で今日が「2026/3/28」なら、結果は約5.99年です。

整数部分だけ取り出したい場合は、INT関数(小数を切り捨てる関数)で囲みます。

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

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

「X年Yヶ月」形式で表示したい場合: YEARFRAC関数では小数しか返せません。「6年5ヶ月」のような表示にはDATEDIF関数が向いています。

契約期間の按分計算

年間保守料120万円の契約で、2024/4/1から2024/12/31までの按分額を計算してみましょう。

=1200000 * YEARFRAC("2024/4/1","2024/12/31",1)

YEARFRAC関数が期間の割合(約0.7514年)を返すので、年間費用に掛けるだけで按分額が出ます。結果は約901,639円です。

月割りだと10万円×9ヶ月=90万円ですが、日割りベースでは端数が変わります。経理処理で正確な日割り按分が求められる場面で活躍しますよ。

YEARFRAC関数でよくあるエラーと対処法

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

YEARFRAC関数に渡した値が正しい日付データでないと#VALUE!エラーが発生します。よくある原因は次の3つです。

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

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

=YEARFRAC(DATE(2024,4,1), DATE(2024,12,31), 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が空欄だったり不正な日付でも、エラーの代わりに空白が表示されます。名簿のように大量の行がある場面ではこの書き方がおすすめです。

DATEDIF・DAYS360との使い分け

YEARFRAC関数と似た関数にDATEDIF関数DAYS360関数があります。それぞれ戻り値の形式が異なるので、目的に応じて使い分けましょう。

項目YEARFRACDATEDIFDAYS360
戻り値年数の小数(例: 0.50)整数(例: 6)日数(例: 180)
端数の扱い小数で含まれる切り捨て日単位で返す
単位年のみ(自動)Y/M/D/YM/MDなど日のみ
主な用途利息日割り・按分計算年齢・勤続年数会計上の日数計算
やりたいことおすすめ関数数式例
期間を年の小数で表示YEARFRAC=YEARFRAC(A2,B2,1)
年齢を満年齢で求めるDATEDIF=DATEDIF(A2,TODAY(),"Y")
「X年Yヶ月」形式で表示DATEDIFY+YMの組み合わせ
360日基準の日数を求めるDAYS360=DAYS360(A2,B2)
日割り利息を計算するYEARFRAC=元本利率YEARFRAC(A2,B2,1)

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

まとめ

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

ポイントを整理します。

  • 構文は =YEARFRAC(開始日, 終了日, [基準]) の2〜3引数
  • 戻り値は小数(例: 0.50年)で、端数まで正確にわかる
  • 基準は省略可。暦日ベースの計算には「1」を指定
  • 利息日割り計算は =元本利率YEARFRAC(開始日,終了日,1)
  • 勤続年数は =YEARFRAC(入社日, TODAY(), 1) で自動計算
  • 「X年Yヶ月」形式にしたいならDATEDIF関数を使う
  • 360日基準の日数計算にはDAYS360関数が便利

日付計算の関数をまとめて知りたい方は、Excelの日付計算ガイドもあわせて読んでみてください。

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