• ベストアンサー

エクセルの数式で困っています

入力数値によって数字が変わるという計算式を作成していますが 例 A1セル=1000 B1セル= 1~10  C1セル=A1*1*0.7  ※C1セル答え700 A1セル=1000 B1セル=11~20  C1セル=A1*1.3*0.7   ※C1セル答え910 A1セル=1000 B1セル=21~30  C1セル=A1*1.6*0.7   ※C1セル答え1120 A1セル=1000 B1セル=31~30  C1セル=A1*1.9*0.7   ※C1セル答え1330 B1セルが10増えていく毎にC1セルのA1に対する掛け率が変わってきます 1~10=1.3倍 11~21=1.6倍 30~41=1.9倍 :  720~731まで 上記のように10増える毎に0.3倍づつ増えていきます A1セルは色々な数値が入り、B1セルに数値を入力しC1セルに答えを出すといった事で 現在IF関数をつかってやっていますが分岐にも限界があるので・・・・ 現在の数式です。 =IF(B1<=10,A1,IF(B1<=20,A1*1.3,IF(B1<=30,A1*1.6,IF(B1<=40,A1*1.9))))*0.7 わかりづらい説明で申し訳ありませんが ご教授宜しくお願い致します

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

ご質問を正確に答えるならば次のような式でどうでしょう。 =IF(OR(COUNT(A1:B1)<2,B1=0,B1>731),"",A1*(1+0.3*INT((B1-1)/10))*0.7) この式ではA1セルかB1セルが空の場合、B1セルが0の場合、B1セルが732以上になったら答えのセルは空になることになります。

ryu14goo
質問者

お礼

早速のご返信ありがとうございます。 バッチリです!!完璧です!! これからは様々な関数をうまく組み合わせことを 勉強したいと思います ありがとうございます。!!

その他の回答 (5)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

INT関数を使用しただけで、考え方は他の方と同じです =A1*(INT((B1-1)/10)*0.3+1)*0.7

ryu14goo
質問者

お礼

早速のご返信ありがとうございます。 説明不足でした。すいません B1セル未入力もしくは0の場合はC1セルには 0もしくは空白が希望でした。 計算は完璧です。

  • kanitako
  • ベストアンサー率0% (0/7)
回答No.4

例えばC1のセルならば、次の数式でいけると思います。 =A1*((ROUNDUP(B1/10,0)-1)*0.3+1)*0.7 B1を10で割った商の小数第一位を切り上げて、1をひき、 その回数分だけ0.3を1に加えたものをA1にかけて、最後に 0.7倍してます。

ryu14goo
質問者

お礼

早速のご返信ありがとうございます。 説明不足でした。すいません B1セル未入力もしくは0の場合はC1セルには 0もしくは空白が希望でした。 計算は完璧です。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! IF関数でも対応できると思いますが、 区分が多すぎるとネストだらけなり 数式がやたらと長くなりますので 一例として↓の画像のような感じで表を作ってみました。 尚、表で必要なのはE列とH列だけでOKなのですが 判りやすくするためにF・G列も表示してあります。 そして、C1セルに =IF(COUNTBLANK(A1:B1)>0,"",A1*0.7*INDEX($H$2:$H$12,MATCH(B1,$E$2:$E$12,1))) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 何とか希望に近い形にならないでしょうか? 以上、お役に立てれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

ryu14goo
質問者

お礼

早速のご返信ありがとうございます。 こういう手もあるんですね。 vlookupと似てますね。 参考になります。

noname#196320
noname#196320
回答No.2

=A1*(1+(ROUNDDOWN(B1/10,0)*0.3))*0.7 上の式でどうでしょうか? 説明っぽくすると、 A列×(1+(B列の1の位を切り捨てた値×0.3))×0.7 みたいな感じです。

ryu14goo
質問者

お礼

ご返信ありがとうございます。 10、20、30・・・の時に計算がずれてしまいます・・・ 次の位の繰り上がってしまう模様です。

  • te12889
  • ベストアンサー率36% (715/1959)
回答No.1

たぶん、別の回答者から具体例が提示されると思いますが、if関数でまかないきれない条件分岐は、vlookup関数でイケると思います。

ryu14goo
質問者

お礼

ご返信ありがとうございます。 vlookup勉強したいと思います 規則的に繰り上がっていくので他の関数でも 出来そうだなという、安直な考えです。 ありがとうございます。