こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのIF関数について

関数の作成についてお伺いします。

エクセルの関数を使って、単価に対する合計を出したいのです。
A1セルにランダムな数字が入っているとして
その数値が1~2999までの単価が25円
3000以上4999以下なら単価22円
5000以上で単価19円
で合計を計算したいのです。

たとえば、A1セルの数値が5500なら
3000*25=74975
2000*22=43978
500*19=9500
で128453
という合計を出せるようにしたいのです。

よろしくお願いいたします。

投稿日時 - 2014-03-11 17:04:38

QNo.8509439

困ってます

質問者が選んだベストアンサー

範囲が曖昧なので2つの式を作りました。

=MAX(A1-4999,0)*19+MIN(MAX(A1-2999,0),2000)*22+MIN(A1,2999)*25

上記で
2999*25=74975 :1個から2999個の2999個
2000*22=44000 :3000個から4999個の2000個
501*19=9519  :5000個から5500個の501個
で合計128494

=MAX(A1-5000,0)*19+MIN(MAX(A1-3000,0),2000)*22+MIN(A1,3000)*25

上記で
3000*25=75000 :1個から3000個の3000個
2000*22=44000 :3001個から5000個の2000個
500*19=9500  :5001個から5500個の500個
で合計128500

投稿日時 - 2014-03-11 18:23:25

お礼

ご配慮感謝します。
ありがとうございます。参考にさせていただきます。

投稿日時 - 2014-03-12 12:29:33

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

ご質問の内容は比較が単純なので、
 A1<=2999ならば、A1*@25
 A1<=4999ならば、A1*@22
 でなければ、A1*@19
をそのまま記述すれば、順番に処理してくれます
しかし、if文は、thenとelseの階層や括弧の組み合わせでよく間違いを起こし、正否確認も解かりづらいのが欠点です。階層や条件が増えるとなおさらです。

私はif分が嫌いで、論理式掛け算を良く使います。
先の例題で言えば、
 答え=A1* (
      and(1<=A1,A1<=2999) *25 +
      and(2999<A1,A1<=4999)*22 +
       (4999<A1) *19
      )
こう書かれていると、各単価の範囲が式上にそのまま見ることができて確認が容易です。
なお、excel計算式は改行やスペースを含んで見やすく記述(後者例5行記述のコピー利用)が可能です。

ご参考まで、でした…

投稿日時 - 2014-03-11 22:53:36

お礼

IFを使わずとも、作成可能ということですね。
ありがとうございます。参考にさせていただきます。

投稿日時 - 2014-03-12 12:30:14

ANo.3

前の人の回答…尊敬します!
色々な角度から物事を見ないとダメですねぇ…

=IF(A2>=5000,(A2-5000)*19+(A2-(A2-5000)-3000)*22+(A2-(A2-3000))*25,IF(A2<3000,A2*25,IF(AND(A2>=3000,A2<5000),(A2-2000)*25+(A2-(A2-2000))*22,IF(A2<5000,(A2-2000)*25+(A2-(A2-2000))*22))))

ためしに、適当にですが作ってみました!
合っているかは不明(たぶんあっていないかと思います)

投稿日時 - 2014-03-11 17:54:32

お礼

考えた次第で、いろいろ作れるものですね。
ありがとうございます。参考にさせていただきます。

投稿日時 - 2014-03-12 12:27:53

ANo.2

=IF(A1<3000,A1*25,IF(A1<5000,3000*25+(A1-3000)*22,3000*25+2000*22+(A1-5000)*19))

投稿日時 - 2014-03-11 17:53:49

お礼

ありがとうございます。参考にさせていただきます。

投稿日時 - 2014-03-12 12:27:03

ANo.1

>たとえば、A1セルの数値が5500なら
>3000*25=74975
>2000*22=43978
>500*19=9500
>で128453
>という合計を出せるようにしたいのです。

間違っています。

「1~2999までの単価が25円」なら

2999*25=74975

です。

「3000以上4999以下なら単価22円」なら

2000*22=44000

です。

「5000以上で単価19円」なら

501*19=9515

です。

2999*25=74975
2000*22=44000
501*19=9515

を合計すると「128494」にならないといけません。計算が間違っています。

なお、金額は

=A1*19+MIN(A1,4999)*3+MIN(A1,2999)*3

の式で出せます。

これは「とりあえず全部19円で計算」して「4999個以下の部分は足りない3円を足して単価22円で計算」して「2999個以下の部分は足りない3円を足して単価25円で計算」しています。

投稿日時 - 2014-03-11 17:33:45

補足

ご回答ありがとうございます。
あわてていて、質問内容が間違えていたことに後で気が付きました。
1~2999個は@¥25
3000~4999個は@¥22
5000個~は@¥19
という意味でした。

投稿日時 - 2014-03-12 09:06:32

お礼

ありがとうございます。参考にさせていただきます。

投稿日時 - 2014-03-12 12:27:23

あなたにオススメの質問