• ベストアンサー

DATEDIF関数と普通の引き算による日数計算

7月25日(セルA1)から7月1日(セルB1)までの日数を計算する場合、B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか?(閏年や、月ごとの総日数の違いなどにより) 日数計算の場合、DATEDIF関数というものもあるようなのですが、これを使うと日数がマイナスになってしまう場合、エラーになってしまうようです。 後者の方が正確であるならば、DATEDIF関数を使いたいんですが、その場合、引き算の結果がプラスになる場合、マイナスになる場合が混在しているデータで使用する場合、どのような計算式を入力すればよいのかが分かりません。 どなたか御存知の方、よろしくお願いします。 ちなみに、単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

用途によりますが、単純な日数計算なら基本的には誤差は出ないと思いますよ。 Excel内では、1900年1月1日を1として、1日ごとに1増える計算になっていますので。 ようするに、数字同士の引き算ですからね。 閏年は計算に入っていますし、月ごとの総日数も関係ないですし。 DATEDIFを使うなら、IF関数で大きさを比べて使ってみてはいかがでしょうか?

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

#4 の私の書いたものの修正します。 すでに、ご指摘がありますが、以下の文言は訂正いたします。 >いいえ、OSが、Winでしたら、1900年(1904年)以降、正しく表示します。 1900/3/1 以降からのシリアル値です。見落としていました。現行バージョン、旧バージョンを調べてみましたが、どちらも同じ1900/2/29が出てきますが、本来、その日はありません。 失礼しました。

  • NCU
  • ベストアンサー率10% (32/318)
回答No.5

1900/2/29 という日付は存在しないのですが、1900年日付システムでは存在しますよね。 つまり、1900年日付システムでの日付シリアルを、「1900/1/1を 1 とする連番」と理解すると、実は 1900/2/29 以降は1日ずれている事になります。 つまり、1900/2/29 をまたぐ日数差の計算は1日ずれてしまいます。逆に言えば 1900/2/29 をまたがない限り日数差は引算で正確に計算できます。 皆それを承知の上で1900年日付システムを使っています。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

>B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか? いいえ、OSが、Winでしたら、1900年(1904年)以降、正しく表示します。 >単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。 そのほうが、自然な考えだと思います。 ここでは、関係がありませんが、DateDif は、"MD", "YD" オプションはバグがありますから、気をつけて使ったほうがよいと思います。"D"なら、同じです。単に、シリアル値からの計算ですから、それなら、使わなくてよいですね。 バグについて、触れられていますが、 http://www.kenzo30.com/zuisou/hanasi3.htm#DATEDIF関数について "MD", "YD" の計算は、いわゆる「祥月命日」までの計算ですが、英米でも同じ計算をするのか、ちょっと不思議に感じたりします。欧州では、みたことがありませんので、ないような気がします。いずれにしても、仕事では、ちょっと使えないオプションのひとつです。 マイナスになる場合 すでに解答が出ていますが、マイナスが出ないように、ABS() で括ればよいだけです。 これは、ワークシート関数のみに発生します。(VBAにも同様のものがありますが、そちらは、そのようなオプションはありません。) MS側は、そのバグについて認識してきても、ずっと放置してきた問題のひとつです。

noname#22222
noname#22222
回答No.3

=ABS((DATEDIF(A1,B1+2100,"d")) - 2100) これでもOK!?

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

こと日数に関する限り、上記は同じ結果です。 =ABS(A1-A2) =IF(A1>A2,DATEDIF(A2,A1,"d"),DATEDIF(A1,A2,"d")) =DATEDIF(MIN(A1,A2),MAX(A1,A2),"d")

関連するQ&A

専門家に質問してみよう