DATEDIF関数と普通の引き算による日数計算
7月25日(セルA1)から7月1日(セルB1)までの日数を計算する場合、B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか?(閏年や、月ごとの総日数の違いなどにより)
日数計算の場合、DATEDIF関数というものもあるようなのですが、これを使うと日数がマイナスになってしまう場合、エラーになってしまうようです。
後者の方が正確であるならば、DATEDIF関数を使いたいんですが、その場合、引き算の結果がプラスになる場合、マイナスになる場合が混在しているデータで使用する場合、どのような計算式を入力すればよいのかが分かりません。
どなたか御存知の方、よろしくお願いします。
ちなみに、単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。
投稿日時 - 2006-07-20 15:33:41
用途によりますが、単純な日数計算なら基本的には誤差は出ないと思いますよ。
Excel内では、1900年1月1日を1として、1日ごとに1増える計算になっていますので。
ようするに、数字同士の引き算ですからね。
閏年は計算に入っていますし、月ごとの総日数も関係ないですし。
DATEDIFを使うなら、IF関数で大きさを比べて使ってみてはいかがでしょうか?
投稿日時 - 2006-07-20 15:46:48
このQ&Aは役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
回答(6)
>B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか?
いいえ、OSが、Winでしたら、1900年(1904年)以降、正しく表示します。
>単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。
そのほうが、自然な考えだと思います。
ここでは、関係がありませんが、DateDif は、"MD", "YD" オプションはバグがありますから、気をつけて使ったほうがよいと思います。"D"なら、同じです。単に、シリアル値からの計算ですから、それなら、使わなくてよいですね。
バグについて、触れられていますが、
http://www.kenzo30.com/zuisou/hanasi3.htm#DATEDIF関数について
"MD", "YD" の計算は、いわゆる「祥月命日」までの計算ですが、英米でも同じ計算をするのか、ちょっと不思議に感じたりします。欧州では、みたことがありませんので、ないような気がします。いずれにしても、仕事では、ちょっと使えないオプションのひとつです。
マイナスになる場合
すでに解答が出ていますが、マイナスが出ないように、ABS() で括ればよいだけです。
これは、ワークシート関数のみに発生します。(VBAにも同様のものがありますが、そちらは、そのようなオプションはありません。)
MS側は、そのバグについて認識してきても、ずっと放置してきた問題のひとつです。
投稿日時 - 2006-07-20 17:54:33