[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『計算式が思いつきません』(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.