[[20050910102707]] 『計算式が思いつきません』(KUN) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『計算式が思いつきません』(KUN)

自動車関連の会社で働いています。クルマの車検有効日を求める計算式がわかりません。

データは、

初度登録日 車検サイクル1  車検サイクル2  車検有効日 

00/05/01    3年        2年      (    )

05/09/30    2年        1年      (    )

05/12/25    1年        1年      (    )←ここを求めたい。

こんな感じで持っています。

*車検有効日は、初度登録日から、車検サイクル1の年数を加算して、
 その日が今日よりも過去であれば、さらに車検サイクル2の年数を加算
 さらにその日が今日よりも過去であれば、さらに車検サイクル2の年数の加算
 を行い、未来日付になったら、その日-1日(前日)を設定。

(車検サイクル1は初度登録日から最初の1回だけ使用し、その後は車検サイクル2
 の年数分だけ増やします)

結果

初度登録日 車検サイクル1  車検サイクル2 車検有効日 

2000/05/01    3年        2年    (2007/4/30) 

2005/08/30    2年        1年    (2007/8/29)

2001/12/25    1年        1年    (2006/1/24)

うまく説明できていますか?
困っています。どなたか計算式を教えてください。


 時間が無く、細部まで確認が取れていません。
 日付の計算は、閏年などがあるのでもしかしたら・・・
 自信はありませんが。。。

        A             B                    C              D        
 1  初度登録日	車検サイクル1	車検サイクル2	車検有効日
 2 2000/5/1	   3年	              2年   	2007/4/30
 3 2005/9/30	   2年	              1年  	2007/9/29
 4 2001/12/25	   1年	              1年   	2005/12/24

 D2 =DATE(YEAR(DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2))
+IF(TODAY()>DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2)),
CEILING(TODAY()-DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2)),365*C2),)),MONTH(A2),DAY(A2))-DAY(1)
 以下コピー

 となりました。
 ご提示頂いたの表は、間違ってますよね?
 >2005/08/30    2年        1年    (2007/8/29)
 >2001/12/25    1年        1年    (2006/1/24)
 間違いだと判断して作りました。

 ※サイクル1と2の書式設定は、0"年" として、数字入力にしてください。
 (キリキ)(〃⌒o⌒)b


 衝突しました。せっかくなので掲示させてください。
 作業列を使いました。
     A              B        C         D        E        F
    初度登録日	車検c1	車検c2	前回年数	次回年数	車検有効日
 1  2000/05/01	3	2	5	6	2006/04/30
 2  2005/08/30	2	1	0	2	2007/08/29
 3  2001/12/25	1	1	3	4	2005/12/24

 D2=DATEDIF(A2,NOW(),"y")
 E2=IF(D2<B2,B2,B2+ROUNDUP((D2/C2),0))
 F2=DATE(YEAR(A2)+E2,MONTH(A2),DAY(A2))-1

(ぱっくん)


 考えている内に2つも回答が、、、。
 初年度登録を2002/9/10とするとキリキさん(2005/9/9)と自分(2007/9/9)では、
 違いが出ました。(今日は 2005/9/10)
 ぱっくんさん、F2 は、2007/4/30 になるのでは?
 と言いつつ、自分でも自信なし。
(純丸)(o^-')b
 =IF(EDATE(A2,12*B2)>TODAY(),EDATE(A2,12*B2)-1,EDATE(EDATE(A2,12*B2)-1,(ROUNDUP((DATEDIF(EDATE(A2,12*B2)-1,TODAY(),"y")+0.1)/C2,0)*C2)*12))

 ふと思いついて、初年度登録を 2000/2/29 としてみたら、自分の数式では
 2007/2/27 キリキさんの数式だと 2007/2/28 。どうやら自分の数式もあやしい。

 なるほど〜
 純丸さん、ご指摘感謝!
 という事で、少し数式をいじってみました〜

 =DATE(YEAR(DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2))
+IF(TODAY()>=DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2)),
CEILING(TODAY()+1-DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2)),365*C2),)),MONTH(A2),DAY(A2))-1

 (キリキ)(〃⌒o⌒)b

 (純丸)さん ご指摘感謝します。「恥ずかしい〜」
  下記に出直し案を作って見ました。 
 *うるう年の処理はこれで正しいのかなあ・・
      A             B        C         D        E          F
 1 初度登録日	車検c1	車検c2	経過年数	前回有効日 次回有効日
 2  2000/5/1	 3	 2	 5	2005/4/30	  2007/4/30
 3  1999/5/1	 3	 2	 6	2004/4/30	  2006/4/30
 4  2005/8/30	 2	 1	 0	-	  2007/8/29
 5  2004/8/30	 2	 1	 1	-	  2006/8/29
 6  2001/12/25	 1	 1	 3	2004/12/24 2005/12/24
 D2=DATEDIF(A2,NOW(),"y")
 E2=IF(D2<B2,"-",
    DATE(YEAR(A2)+(B2+(ROUNDDOWN((D2-B2)/C2,0)*C2)),MONTH(A2),DAY(A2))-1)
 F2=IF(E2="-",
    DATE(YEAR(A2)+B2,MONTH(A2),DAY(A2))-1,
    DATE(YEAR(E2)+C2,MONTH(E2),DAY(E2)))
 (ぱっくん)

 ぱっくんさんが熱心さが伝わってくるので、1個だけ。。。

 A2に、2001/3/1 と入力すると、
 ぱっくんさん 2006/3/1
 キリキ	    2006/2/28
 となります。

 ※お気を悪くしないでくださいね〜♪
 (キリキ)(〃⌒o⌒)b

 うわーーそういうことになっていましたか!
 (キリキ)さんありがとうございます。
 F2=・・
    DATE(YEAR(E2)+C2,MONTH(E2),DAY(E2)))
 を(DATE(YEAR(E2)+C2,MONTH(E2),DAY(A2)-1))
 ですか?
 そもそも法律では、車検日程は365日換算で計算するのか、
 初回年に単純に年数を加算してその月日はその前日という
 ことなんですかね?
 (ぱっくん)

 ぱっくんさん!
 それだと、(2006/2/1) -1 なので、 2006/1/31 になっちゃいます・・・

 >そもそも法律では、車検日程は365日換算で計算するのか、
 >初回年に単純に年数を加算してその月日はその前日という
 >ことなんですかね?
 確かに・・・
 どうなんだろう???
 KUNさんも戻ってこないし、、、
 週明けにでも、答えが出るかな?

 (キリキ)(〃⌒o⌒)b

うわぁ〜、びっくりしました!。すみません、教えていただいてるのに、
レスいれられなくて・・・。

キリキさん、ぱっくんさん、純丸さん、みなさん本当に感謝しています。

車検有効日の件ですが、「初年度+サイクル(年)-1日」になります。

初年度登録を 2000/2/29だとすると、有効日は2005/2/28、

       2001/3/1だとすると、有効日は2006/2/28
になります。

いまから、数式を当てはめて、トライ!して見ます。

本当にありがとうございました。m(__)m
(KUN)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.