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

商品値引額の按分を計算→端数(余り)を一度で求めたいです。

私が今行っている方法だと、値引額を按分し商品別値引額を算出
その後、按分しきれない(端数)を算出します。

例)
商品A:1000円(1個)
商品B:900円(2個)
 商品合計:1900円
 これに対して、値引:150円

商品A按分金額:150×(1000÷1900)=78.94...
        78円(小数点以下を切捨て)
商品B按分金額:150×(900÷1900)=71.05...
        71円(小数点以下を切捨て)
端数:150-(78+71)=1

と求めているのですが、一度で簡単に端数を算出することは出来ますか?
エクセル、アクセス、(SQLでも)の関数などで一度にもとめられますでしょうか?
よろしくお願いいたします。

A 回答 (3件)

多分、このケースであれば端数は 0 か 1しかないと思いますので


先の表の場合
=(MOD(B3*B2,B1+B2)>0)*1
で良いかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

今回のケースなら、回答いただいた内容で対応できそうですが、
もし、商品が3つあったら、端数が「0」や「1」以外の場合や、
内容が、変動した場合に自動的に端数を求めること。

これらを、簡単に関数で求められるかな~と思ったのですが、
難しそうなので(ない?)、式を組み立てていくことにします。

お礼日時:2009/02/05 18:16

計算はできているので、そのまま長い式にしてしまえば良いだけでは?



一般化して、
商品Aをa、商品Bをb、値引きをcとすれば…
 端数 = c-( INT(c*a/(a+b)) + INT(c*b/(a+b)) ) という感じ。
( INT( )は切り下げの数学関数と仮定しています。)

例えばエクセルの場合、
商品Aの値段がA1セルに、商品Bの値段がA2セルに、値引きがA3セルにあるとすれば、
 =A3-ROUNDDOWN(A3*A1/(A1+A2),0)-ROUNDDOWN(A3*A2/(A1+A2),0)

この回答への補足

回答ありがとうございます。

確かに、そのまま計算式をつなげれば求められるのですが、
一発で端数を求めるような関数があればと思いまして。。。

言葉が足りなくて、すいません。

補足日時:2009/02/04 21:00
    • good
    • 0

そのまま、計算されたことを式にすればよいと思います。


エクセルの事例で
  A  B
1商品A 1000
2商品B 900
3値引き 150
端数は =B3-INT(B3*B1/(B1+B2))-INT(B3*B2/(B1+B2))
となりますが。

この回答への補足

回答ありがとうございます。

確かに、そのまま計算した内容で式にすれば求められるのですが、
端数を求めるような関数があればと思いまして。。。

言葉が足りなくて、すいません。

補足日時:2009/02/04 20:57
    • good
    • 0

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