- ベストアンサー
エクセルのYEARFRACで・・・。
エクセルである期間を計算するためにYEARFRAC関数を用いました。 仮にA1に1999/4/1、B1に2007/4/1と入力し、C1に端数は切り上げた状態で年数を9年(8年と1日なので)と表示させたいのです。 そこでC1に『ROUNDUP((YEARFRAC(A2,B2)),0)』と入力したのですが、8年と表示されてしまいます・・・。 これを9年と表示するにはどうしたらよいのでしょうか? 『ROUNDUP((YEARFRAC(A2,B2))+1,0)』とすれば良いのかと思ったのですが、検証した結果違うみたいで・・・。 分かる方がいらしゃったら教えて下さい!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#02です。#01さんの補足を見て再度試しました 開始日 終了日 YEARFRAC(A1,B1,3) YEARFRAC(A1,B1,1) 2003/4/1 2006/4/1 3.002739726 3.000684463 2004/4/1 2007/4/1 3 2.997946612 2005/4/1 2008/4/1 3.002739726 3.000684463 2006/4/1 2009/4/1 3.002739726 3.000684463 どうもYEARFRAC関数は「年」だけで年間日数(365日または366日)の判断をしているようです。これでは厳密な計算には使えませんね。 やはり「満年数+1」を求める式である =DATEDIF(A2,B2,"Y")+1 をお勧めします
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
#02です。YEARFRAC関数を試した結果、訂正があります。 2004年02月が閏年です 開始日 終了日 2003/4/1 2004/4/1 (2/29を挟んだ1年+1日) =TEARFRAC(A1,B1,1) → 結果は1.00 → 切り上げて1 =TEARFRAC(A1,B1,3) → 結果は1.002739 → 切り上げて2 開始日 終了日 2002/4/1 2004/4/1 (2/29を挟んだ2年+1日) =TEARFRAC(A1,B1,1) → 結果は2.000912409 → 切り上げて3 =TEARFRAC(A1,B1,3) → 結果は2.002739726 → 切り上げて3 開始日 終了日 2002/4/1 2004/3/31 (2/29を挟んだ満2年ちょうど) =TEARFRAC(A1,B1,1) → 結果は1.998175182 → 切り上げて2 =TEARFRAC(A1,B1,3) → 結果は2.00 → 切り上げて2 =TEARFRAC(A1,B1,3) はちゃんと閏年を考慮しているようです。
お礼
うるう年に気をつけなければいけないなんて、念頭になかったです。 うるう年って計算が面倒臭いんですね・・・。
- zap35
- ベストアンサー率44% (1383/3079)
YEARFRAC関数を使用したいなら =ROUNDUP(YEARFRAC(A1,B1,3),0) で「9」になります。ただしYEARFRAC関数は閏年は考慮していないので必ずしも正確ではない可能性があります =DATEDIF(A2,B2,"Y")+1 の方がよいかもしれません。
お礼
回答ありがとうございます! うるう年が関係するのですね・・・。 ご提案の『=DATEDIF(A2,B2,"Y")+1』を試したところ、上手く行きました! 関数は種類が多くてどれを使用すべきか悩むのですが、1つずつマスターしていこうと思います。
- merlionXX
- ベストアンサー率48% (1930/4007)
=YEARFRAC(A1,A2)は、=YEARFRAC(A1,A2,0)と同様、1年を360日で計算しますから、そういう結果になります。 実際の日数で計算するなら=YEARFRAC(A1,A2,1)としなければいけません。 切り上げるなら、 =ROUNDUP(YEARFRAC(A1,A2,1),0)ではどうでしょうか?
お礼
回答ありがとうございます。 ご提案どおりROUNDUP((YEARFRAC(A1,B1,1)),0)と変えてみました。 質問例の1999/4/1から2007/4/1までの期間計算は9年と表示されましたが、2004/4/1から2007/4/1で試算させたところ3年となってしまいました(泣) 本来は3年と1日なので4年となって欲しかったのですが・・・。 何か足りないんでしょうか?
お礼
検証ありがとうございます! ご提案どおり『=DATEDIF(A2,B2,"Y")+1』を使用したいと思います。 数の数え方は難しいんですね・・・。