DATEDIFの日数計算の不具合

Pocket

Excelのワークシート関数の「DATEDIF」で引数に「MD」を使うと月未満の日数が計算できます。
バグがあることで有名ですが、具体的な不具合を挙げておきます。

月末から1日まで

明らかにおかしいのは終期を3月1日にした場合。値がマイナスになります。
DATEDIFのロジックはおそらく終期の前月の応当日から数えるようになっているようです。「2月31日から3月1日まで」というありえない日付で計算するのでこのような不具合が生じるのだと思います。

始期 終期 DATEDIF(MD)
2001/7/31 2002/1/1 1
2001/7/31 2002/2/1 1
2001/7/31 2002/3/1 -2
2001/7/31 2002/4/1 1
2001/7/31 2002/5/1 0
2001/7/31 2002/6/1 1
2001/7/31 2002/7/1 0
2001/7/31 2002/8/1 1
2001/7/31 2002/9/1 1
2001/7/31 2002/10/1 0
2001/7/31 2002/11/1 1
2001/7/31 2002/12/1 0

2日から1日まで

明らかにおかしいのは終期が閏年の場合。値が31より大きくなります。

始期 終期 DATEDIF(MD)
2001/10/2 2002/1/1 30
2001/10/2 2003/1/1 30
2001/10/2 2004/1/1 143
2001/10/2 2005/1/1 30
2001/10/2 2006/1/1 30
2001/10/2 2007/1/1 30
2001/10/2 2008/1/1 143
2001/10/2 2009/1/1 30
2001/10/2 2010/1/1 30
2001/10/2 2011/1/1 30
2001/10/2 2012/1/1 143

2月末日から1日まで

正しいのは終期が3月1日のときだけで他はすべてダメです。
これも前月の応当日から数えるようなロジックが原因だと思われます。

始期 終期 DATEDIF(MD)
2001/2/28 2002/1/1 4
2001/2/28 2002/2/1 4
2001/2/28 2002/3/1 1
2001/2/28 2002/4/1 4
2001/2/28 2002/5/1 3
2001/2/28 2002/6/1 4
2001/2/28 2002/7/1 3
2001/2/28 2002/8/1 4
2001/2/28 2002/9/1 4
2001/2/28 2002/10/1 3
2001/2/28 2002/11/1 4
2001/2/28 2002/12/1 3

[ 2010年11月4日 | カテゴリー: Excel | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報