dポイントプレゼントキャンペーン実施中!

エクセルで
重量によって値段を出す場合

①2キロ未満の場合均一して3000円
②2キロ以上の場合1キロにつき1000円(1キログラム=1000円)を計算する

の二つの公式を当てはめるように価格を算出するには
どのような計算式を作ればいいのでしょうか?

A 回答 (4件)

(重量kg-2kg)×1000円+3000円



まあ、これが基本の計算式になります。
他の回答者さんからのご指摘があるように重量が2kgに満たない場合を考慮する必要があります。
その場合、等式や不等式を組み込んで ”True”、”False” を計算させるのではなく
MAX関数を入れるほうが簡単ではないでしょうか。

 (MAX(重量,2)-2)×1000+3000

こうなります。
 重量が2kgよりも小さければ問答無用で2kg、
 重量が2kgよりも大きければ重量そのままの値、
として計算します。

・・・

さて、続いての問題は2kgを超過した分をどう計算するのかという点になります。
2.5kgの場合、
 4000円になるのか(1kg以下は切り上げ)
 3500円になるのか(1kgあたり1000円の割合で計算)
それとも
 3000円になるのか(1kg未満は切り下げ)
って話です。
上記の数式では3500円と計算されるので、これで良ければ特に考える必要はありません。
切り上げたり切り下げたりするのであれば、ROUNDUP、ROUNDDOWN関数を組み込みましょう。

 (MAX(ROUNDUP(重量,0),2)-2)×1000+3000
 (MAX(ROUNDDOWN(重量,0),2)-2)×1000+3000

こうなります。
小数点以下の数値を切り上げまたは切り下げになります。

※ 難しい関数は使用していませんので、どのような働きをする関数なのかを確認してください。
    • good
    • 1

大変失礼ですが、No.1さん、No.2さんの数式は、「重量」と名前を付けたセル(或いは「重量」を入力するセル)が未入力(つまり、空白)の場合、数式記述セルに「3000」と表示されます。


EXCELでは入力セルが未入力の場合、数式を記述したセルが「0」と表示されるケースはよくお目にかかるのですが、未入力だと「3000」と表示された状態というのは避けた方がよいように思います。

そこで

=((重量>0)*3+(重量>2)*(重量-3))*1000

という数式はどうでしょうか。未入力のときは「0」が表示されます。

上記数式はNo.1さん、No.2さんのご指摘のとおり、「逆転現象」が起きるという前提です。・・・①

なお、①は2kg未満3000円、➁の条件が、2kg(3000円)を超えたら超過分に対して、1kg=1000円換算での価格に加算されるという意味なら、

=((重量>0)*3+(重量>2)*(重量-2))*1000

という数式でどうでしょうか
この場合は、「逆転現象」は発生しません。

----余談----
①の前提ですが、
このような値段設定で、そもそも購入の仕方として「1.5kg買いたい」「1.9kg買いたい」という場合はそれぞれ1.5kg、1.9kg売って3000円貰うということでよいと思いますが、「3000円分買いたい」と言われたら、3kg売るしかない(もし、1.999kgしか売らなかったら詐欺になるかも・・・)ので、あまり意味のある値段設定とは思えませんが・・・
    • good
    • 0

=if(重量<2,3000,roundup(重量)*1000)


(端数切り上げ)ですが、1.9kgが3000円で、2.0kgが2000円という逆転現象が起こります。
2キロ以上の場合、2キロを超過した分(端数切り上げ)の1キロにつき1000円ということであれば、
=if(重量<2,3000,3000+roundup(重量-2)*1000)
でしょうか。
    • good
    • 0

こんにちは



1kgで3000円、2kgだと2000円、3kgで3000円‥って妙な料金体系だと思いますけれど・・・

 =(重量+(重量<2)*(3-重量))*1000
とかではいかがでしょうか?

※ 重量はkg単位と仮定
    • good
    • 1
この回答へのお礼

ありがとうございます。
大変参考になります!

お礼日時:2021/11/16 16:05

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