• ベストアンサー

Excelでこういう式が作れますか?

セルA1に金額が入ります。B1にその金額に対する割引率が入ります。 割引率は、金額が10001~20000円なら1%、20001~30000円なら2%・・・ 100000円以上は10%という風に10段階ぐらいあります。 (10000円以下は割引なしです。) 私は下の式のように、 =IF(A1>100000,0.1,IF(A1>90000,0.09,IF(A1>80000,0.08,・・・ IF関数を沢山つなげる方法しか思い付かないのですが、 10個もつなげるとエラーになってしまって出来ませんでした。 (ヘルプを見ると7段階(?)しかつなげられない、みたいに書いてありました。) この場合、どうやったら全部の割引率を1つの式に出来るでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.2

(方法1) まず、5万円を超える場合と5万円以下の場合にわけ、 5万円を超える場合を、7万円を超える場合と7万円以下の場合に分け、 7万円を超える場合を9万円を超える場合と9万円以下の場合に分け、 9万円を超える場合を10万円を超える場合と10万円以下の場合に分ける というようになるべく均等に二分割していくと、7段階を使い切らずにすみます。 (方法2) =if(A1>100000,0.1,int((A1-1)/10000)/100) のように、金額から割引率が出るような数式を工夫します。

sarnin
質問者

お礼

さっそくの回答ありがとうございます。 いろいろやり方があるんですね。 関数自体ほとんど知らないので、もっと勉強しようと思います。

その他の回答 (2)

回答No.3

VLOOKで、テーブルを作らずに式の中に組み込む方法もあります。 ちょっと長いですが、検索値がA1にあるとして、 =VLOOKUP(A1,{0,0;10001,.01;20001,.02;30001,.03;40001,.04;50001,.05;60001,.06;70001,.07;80001,.08;90001,.09;10001,.1},2)

sarnin
質問者

お礼

さっそくの回答ありがとうございます。 {}とか;を使うのは初めて知りました(汗) Excelにコピペしてじっくり理解しようと思います。

回答No.1

VLOOKUP関数を使うといいでしょう。 別シート(たとえばsheet2)に次のようなリストを作ります  A  B   0   0 10001 0.01 20001 0.02 30001 0.03  :  : これにたとえば「LIST」と名前を付けてください。 この上で、A1に金額、B1に以下の式を入れると =VLOOKUP(A1,LIST,2,TRUE) ご希望の結果が現れます

sarnin
質問者

お礼

早速の回答ありがとうございます。 こういうやり方があるのですね。 VLOOKUP関数というのは知りませんでした(恥) なぜそうなるのかが分からないので、 勉強してよく理解してみようと思います。