• ベストアンサー

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

入力数値によって数字が変わるという計算式を作成していますが 例 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勉強したいと思います 規則的に繰り上がっていくので他の関数でも 出来そうだなという、安直な考えです。 ありがとうございます。

関連するQ&A

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • Excel2003の数式設定について教えて下さい。

    Excel2003の数式設定について教えて下さい。 【C1セル】には 数式「=IF(A1="","",A1)」 【D1セル】には 数式「=IF(B1="","",B1)」 【E1セル】には 数式「=IF(AND(ISBLANK(C1),ISBLANK(D1)),"",(IF((C1+D1)=0,"---",C1+D1)))」 と設定した状態で、 【A1セル】に 数値「100」と入力し、 【B1セル】に 数値「200」と入力した場合、 【E1セル】は 「300」と出力されますが、 【A1セル】、もしくは【B1セル】を 空欄にした場合、 【E1セル】は エラーとなり、「#VALUE」と出力されてしまいます。 小生としては、【C1セル】【D1セル】の両セルとも表示上は空欄の為、 ISBLANK関数でTRUEと判定し、【E1セル】は空欄になってほしいのですが、 【C1セル】や【D1セル】には数式が設定されている為、 ISBLANK関数でTRUEと判定されずに、「IF((C1+D1)=0」の演算でエラーとなっている様です。 小生が実現したいこと、 「【C1セル】と【D1セル】の数式の実行結果が空欄以外の時のみ、  【E1セル】の数式を実行する。」 の方法をご存知の方、教えて下さい。お願い致します。

  • (MS-Excel数式) 複数の対応を簡潔にしたい

    例:参照セルの値が数値Aであれば=数値Bを返す A=B→2=1,5=2,6=3,11=4,・・・ 数値Aが、たとえば1,2,3…とか2,4,6…なら2で割ればCHOOSE関数が、A=Bが少ない場合はIF文が、それぞれ有用だと思いますが、1,2,3…にならなくて数が多い場合は数式が長くなるのを、簡潔にしたいというか、何か単一または組み合わせて、簡潔になる関数や数式がありそうな気がして質問しました。 実際に作りたい数式は、上記で1,2,3…となったものを、CHOOSE関数で括ろうと考えています。 言い方を変えれば、例えば=CHOOSE(A1,,A,,B,C,,,,D…)または=CHOOSE(長い数式,A,B,C,D…)となるのを、=CHOOSE(短い数式,A,B,C,D…)にしたいということです。 ただし、複数のセルを使って行程的に1,2,3…を導く方法はナシでお願いします。 いくつものセルに、それぞれA=Bの対応が異なる数式を入れる必要があるので、手間とミスの可能性で困っています。 よろしく、お願いします。

  • エクセルの数式の作り方を教えて下さい。

    エクセルの表計算の数式の作り方を教えて下さい。 例えば、A1+B1=C1 の場合 C1のセルに=A1+B1と入力する所までは分かるのですが、A1に入力してB1には入力しなかった場合C1にはA1の数値が入りますが、A1かB1のどちらか一方が入力されてない場合はC1のセルを空欄にする計算式を教えて下さい。

  • エクセル 数式について

    皆さんこんにちわ。 現在エクセルで計算式を作らせようとしているのですが、 わからない事があったので質問させて下さい。 メインシート(シート1) A1セルに入力欄(数値記入)  B1セルにA1セルから出した結果  C1セルには別シートの対応した列の数値÷B1セルに入力した数値 別シート内容(シート2) A1 1 B1 20000 A2 2 B2 40000 A3 3 B3 60000 例で書くと シート1のA1セルに2 シート1のB1セルに2000  と書いてるとして シート1のC1セルには   「A1には2と入っているのでシート2の2って表示されている列のB2セルの40000÷B1セルの2000」の答えを表示させたいです。 ここでわからないのが別シートからの参照方法とその列の入力した数字の列のBセルの参照 方法です。(その行で2と言う数値がある列の別セルを参照させる) 少しわかりずらいのですが、上記に書いた事のやり方 どんな風にしたらいいのか、詳しい方ご助言下さいm(__)m

  • エクセルでの数式入力

    エクセルでどのように数式を入力すれば良いのかで困っています・・・ B2(0.2)÷C2(3.0)×60+A1(6:50←時間)=A2(6:54←時間) になるように数式を入れたいのです。 私がA2に入力した数式は =B2/C2*60+A1 A1とA2のセルを時刻入力設定しました。 ですがA2がちゃんと6:54になってくれません・・・ 6:51になってしまいます・・・ どのように数式を入れれば正確な数字が出てきてくれるんでしょうか? ご存知の方教えてください・・・

  • エクセル 120を150に180を200にする数式

    エクセルの関数について… なんとせつめいしていいのか分からないのですが  120だと150に切上げ?  180だと200に切上げになる数式はありますか? 闘っている数式が  =IF(C23="","",(ROUNDUP(ROUNDUP(C23/D23,0)*E23,-2))/50)=12 数字に置き換えると →→ =IF(C23="","",(ROUNDUP(ROUNDUP(2000/100,0)*26,-2))/50)=12 なんですが、答えを11にしたいのです。 初心者なので、解り易い回答をお待ちしています…

  • 数式を教えてください。(エクセル)

    教えてください。 A1セルに100、B1に200、C3に-300 A2セルに-50、B2に50、C3に-50 があるとします。 で、縦の計算法を常に引き算をしたいのです。(A1-A2のように) オートSUMの場合、Aの列はちゃんと計算できると思うのですが、そうするとBの列は250になってしまいますよね。 この答えは200-50=150としたいのです。 またC列は、-300引く-50で、答えは-250としたいのですが・・・ マイナスを認識しつつ、セルの数値がプラス・マイナスにかかわらず すべて引き算計算をしたいのですが、 そういう数式ってありますか?

  • エクセルの数式をどのように入れたら良いでしょうか?

    エクセルの数式をどのように入れたら良いでしょうか? いつもこちらでお世話になっています。 今回も教えて頂きたく質問させていただきます エクセルについてですが、 sheet1に入っているデータを sheet2に入力するようにしたいのですが sheet1の A列に1~50までのNo. →A1セルにNo.1、A50セルにNo.50 B列に(1)データ C列に(2)データ があり sheet2の D5のセルに「1」と入力すれば、sheet1!A列の数字とリンクしてsheet!B1の(1)データが入り D6のセルに「10」と入力すれば、Sheet1!A列の数字とリンクしてsheet!C10の(2)データが入る ように設定し、 さらにsheet2のD5,D6のセルに上書きで(繰り返し)数字を入力させ 数式が消えないようにしたいのですが どのようにすればよいでしょうか? 分かりずらい説明で申し訳ありませんが 大変困っているので、アドバイス頂けると助かります。

  • エクセルの数式を教えてください。

    仕事で使う請求書など作っています。 その表で数量(A1) 単価(B1) 計(C1) 数量かける単価=計 そして数量が入力ないときは¥0と出したくないので (C1)の数式は  =IF(ISBLANK(A1),"",SUM(A1*B1)) にしました。ここまでは良かったのですが 単価のところには3m2のように数字以外を入れることになるのでエラーになってしまいました。 そこでm2などが入った場合でも数字だけを読み取って計算してくれる数式を教えてください。よろしくお願いします。

専門家に質問してみよう