- ベストアンサー
エクセルの数式で困っています
入力数値によって数字が変わるという計算式を作成していますが 例 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 わかりづらい説明で申し訳ありませんが ご教授宜しくお願い致します
- みんなの回答 (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以上になったら答えのセルは空になることになります。
その他の回答 (5)
- hige_082
- ベストアンサー率50% (379/747)
INT関数を使用しただけで、考え方は他の方と同じです =A1*(INT((B1-1)/10)*0.3+1)*0.7
お礼
早速のご返信ありがとうございます。 説明不足でした。すいません B1セル未入力もしくは0の場合はC1セルには 0もしくは空白が希望でした。 計算は完璧です。
- kanitako
- ベストアンサー率0% (0/7)
例えばC1のセルならば、次の数式でいけると思います。 =A1*((ROUNDUP(B1/10,0)-1)*0.3+1)*0.7 B1を10で割った商の小数第一位を切り上げて、1をひき、 その回数分だけ0.3を1に加えたものをA1にかけて、最後に 0.7倍してます。
お礼
早速のご返信ありがとうございます。 説明不足でした。すいません B1セル未入力もしくは0の場合はC1セルには 0もしくは空白が希望でした。 計算は完璧です。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
早速のご返信ありがとうございます。 こういう手もあるんですね。 vlookupと似てますね。 参考になります。
=A1*(1+(ROUNDDOWN(B1/10,0)*0.3))*0.7 上の式でどうでしょうか? 説明っぽくすると、 A列×(1+(B列の1の位を切り捨てた値×0.3))×0.7 みたいな感じです。
お礼
ご返信ありがとうございます。 10、20、30・・・の時に計算がずれてしまいます・・・ 次の位の繰り上がってしまう模様です。
- te12889
- ベストアンサー率36% (715/1959)
たぶん、別の回答者から具体例が提示されると思いますが、if関数でまかないきれない条件分岐は、vlookup関数でイケると思います。
お礼
ご返信ありがとうございます。 vlookup勉強したいと思います 規則的に繰り上がっていくので他の関数でも 出来そうだなという、安直な考えです。 ありがとうございます。
お礼
早速のご返信ありがとうございます。 バッチリです!!完璧です!! これからは様々な関数をうまく組み合わせことを 勉強したいと思います ありがとうございます。!!