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

解決済みの質問

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

入力数値によって数字が変わるという計算式を作成していますが

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

わかりづらい説明で申し訳ありませんが
ご教授宜しくお願い致します

投稿日時 - 2009-09-13 00:27:24

QNo.5285159

すぐに回答ほしいです

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

ご質問を正確に答えるならば次のような式でどうでしょう。
=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以上になったら答えのセルは空になることになります。

投稿日時 - 2009-09-13 08:44:09

お礼

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

投稿日時 - 2009-09-13 09:13:40

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

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

回答(6)

ANo.5

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

投稿日時 - 2009-09-13 03:27:57

お礼

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

計算は完璧です。

投稿日時 - 2009-09-13 09:20:35

ANo.4

例えばC1のセルならば、次の数式でいけると思います。
=A1*((ROUNDUP(B1/10,0)-1)*0.3+1)*0.7

B1を10で割った商の小数第一位を切り上げて、1をひき、
その回数分だけ0.3を1に加えたものをA1にかけて、最後に
0.7倍してます。

投稿日時 - 2009-09-13 01:16:08

お礼

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

計算は完璧です。

投稿日時 - 2009-09-13 09:16:33

ANo.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

投稿日時 - 2009-09-13 01:06:57

お礼

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

投稿日時 - 2009-09-13 09:26:08

=A1*(1+(ROUNDDOWN(B1/10,0)*0.3))*0.7

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

投稿日時 - 2009-09-13 01:04:35

お礼

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

投稿日時 - 2009-09-13 09:19:33

ANo.1

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

投稿日時 - 2009-09-13 00:40:17

お礼

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

投稿日時 - 2009-09-13 09:24:02

あなたにオススメの質問