裏表(Phinloda のもう裏だか表だか分からないページ)

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
<< 月末というのをうっかりしていたのだが | Top | 携帯のスロットの目押し >>
Excel 2007 の DATEDIF の bug (解決)

以前書いた、DATEDIF がとんでもない数値を返すという excel 2007 の bug の回避方法である。探しても結局うまい方法が見当たらないので自力で解決した。

発想は単純で、このバグは終了日がうるう年の1月の場合に発生するという前提があるらしい。だったら、その時だけ、1年前の日付で計算してやればいいはず。実際にやったらこんな式になる。

比較対象のセルが A1 と B1 だとすれば、

=DATEDIF(A1,B1,"MD")

の代わりに、

=DATEDIF(IF(AND(MOD(YEAR(B1),4)=0,MONTH(B1)=1),A1-365,A1),IF(AND(MOD(YEAR(B1),4)=0,MONTH(B1)=1),B1-365,B1),"MD")

とすればよい。365を引いて1年前にして判定する。これで、2011/12/31 と 2012/1/1 を入れてやれば、1という期待した数値が入る。

うるう年の判定は100年の例外があるから単に4で割るだけではダメだ。しかし、この場合、前年がうるう年でなければ1年前にして比較しても同じ結果が出る。だから、単に4で割るだけでokなのである。

JUGEMテーマ:コンピュータ
| Excel | 20:17 | comments(7) | trackbacks(0)
スポンサーサイト
| - | 20:17 | - | -
コメント
管理者の承認待ちコメントです。
| - | 2018/08/18 2:12 AM |
管理者の承認待ちコメントです。
| - | 2019/01/07 4:02 AM |
管理者の承認待ちコメントです。
| - | 2019/01/11 10:14 PM |
管理者の承認待ちコメントです。
| - | 2019/02/08 10:53 AM |
管理者の承認待ちコメントです。
| - | 2019/03/07 10:55 PM |
管理者の承認待ちコメントです。
| - | 2019/03/22 8:37 AM |
管理者の承認待ちコメントです。
| - | 2019/05/26 4:42 AM |
コメントする









この記事のトラックバックURL
http://phinloda.jugem.cc/trackback/2865
トラックバック
Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< June 2019 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE