プロが教えるわが家の防犯対策術!

当月の「支払残金額」を求めるために、以下のように式を作りました。

1.「支払開始日」から「支払完了日」まで何ヶ月間あるかを算出。
 (例:2002年10月~2003年1月)
  [完了日(月)]+([完了日(年)]-[開始日(年)])*12 -[開始日(月)] +1
  1 + (2003 - 2002)*12 -10 +1 =4 
  4ヶ月間

2.「注文金額」を、「何ヶ月間か」で割った「ベース単価」を算出。
 (例:注文金額が40000円の場合)
  上の式を[式1]として、
  [注文金額]/[式1] = 10000

3. 当月の、支払残金額を求める。
 (例:当月が10月の場合)
 [ベース単価]*([完了日(月)]+([完了日(年)]-[当月(年)])*12-[当月(年)]+1) 
 10000*{1+(2003-2002)*12 -10 +1}=10000*4 =40000

 → 当月から完了日まではあと40000円(支払残金額)。

当月が11月の場合は10000*3であと30000円、、、
という風に計算される仕組みで、これで上手くいったかな?と思ったんですが、、、

これは、「当月」と「支払開始日」が同じ時じゃないと駄目なのですよね。
例えば[当月]が10月、[開始日]が11月、[完了日]が2月、[注文金額]が40000円の場合、

1.何ヶ月間あるか?
 2+(2003-2002)*12 -11 +1=4
 4ヶ月間。

2.ベース単価 40000÷4=10000円。

3.当月の支払残金額?
 10000*{2+(2003-2002)*12 -10 +1}=10000*5 =50000円(!

「完了日」から「当月」までは5ヶ月間なのに、そのまま「ベース単価」をかけてるので、
開始日と当月が一致しない場合は「注文金額」より多くなってしまいます、、、


しかし、上手く計算させるためにどうすれば良いのか判らなくて、
全く行き詰まってしまいました。
「当月」と「開始日」を上手く使えば出来そうな気もするのですが、、、

長々と申し訳ありません。
ばしっと解答を戴けると幸いです。宜しくお願い致します。

A 回答 (2件)

「当月」が「開始日」より前かどうかを判断する分岐を式の中にネストすれば良い


のではないでしょうか。
例えばIIf関数で
IIf([当月]>=[開始日],[ベース単価]*([完了日(月)]+([完了日(年)]-[当月(年)])*12-[当月(年)]+1)],[注文金額])
この様な分岐で演算させれば[当月]が[開始日]より後か等しければ式を計算し条件
に該当しなければ[注文金額]を持ってくる。
こんな感じでどうでしょう。
    • good
    • 0
この回答へのお礼

こんなに早く回答して下さってありがとうございます。
解説して下さった通りに式を書いてみましたら、ばっちり算出する事が出来ました!
昨日から悩んでいた事なので本当に助かりました。本当にありがとうございます!

お礼日時:2002/10/24 13:16

単純な方法で申し訳ないですが



>3. 当月の、支払残金額を求める。
> (例:当月が10月の場合)
> [ベース単価]*([完了日(月)]+([完了日(年)]-[当月(年)])*12-[当月(年)]+1) 
> 10000*{1+(2003-2002)*12 -10 +1}=10000*4 =40000

この部分で算出期間の判定をもうけます。

if [開始日] > [当月] then
[算出期間] = [期間]
elseif [終了日] < [当月] then
[算出期間] = 0
else
[算出期間] = ]*([完了日(月)]+([完了日(年)]-[当月(年)])*12-[当月(年)]+1
end if
[支払残金額] = [ベース単価]*[算出期間] 

でどうでしょうか?
ifじゃなくてselect caseで判定してもいいです。その辺りは臨機応変に。
    • good
    • 0
この回答へのお礼

手早い回答をありがとうございます。
こういう式の書き方もあるのですね。単純だなんてとんでもないです!
本当に勉強になりました。ありがとうございました!

お礼日時:2002/10/24 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す