• ベストアンサー

こんな数式をつくりたいのですが

エクセルで、こんな数式をつくりたいと思っています。 おわかりになる方、教えていただけるとありがたいです。  (A) ──────  100~199   A×40%  200~299   A×30%+20 Aという数字があって、 Aが100~199のときは、A×40%が最終の値になり 200~299のときは、A×30%+20が最終の値になる。 このようにパターンがいくつかあるのです。 そして、 最終的には、 あるレコードに A 関数 最終の値 という風に3つのセルで並べたいのですが、 これっていうのはIF関数をつなげるイメージに なりますか? そのつなげ方もイマイチよくわからないので、 アドバイスいただけるとうれしいです。 長い説明ですみません。。。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

為参考です。 長ったらしいですがIF関数で行うと以下のようになります。(定数値は、固定セルにすれば少々短くなります) =IF(A1<135416,54167,IF(A1<149999,A1*40%,IF(A1<299999,A1*30%+15000,IF(A1<549999,A1*20%+45000,IF(A1<833333,A1*10%+100000,A1*5%+141667))) これを最終値のセルに設定し、下方向にコピーする。 又、計算式については、この関数の計算部分を""で囲で下さい。

sacsac5
質問者

お礼

長くても、1セルにおさまるので、 たすかります。 ありがとうございました!

その他の回答 (3)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.2です。 No.2の補足欄に対して。 [Sheet2]の表を以下のようにします。    A    B    C 1  0   0   54167 2 135417   0.4   0 3 150000   0.3   15000 4 300000   0.2   45000 5 550000   0.1   100000 6 833334  0.05  141667 そうして、元のシートのA1に値を入力するとして、 B1に、 =REPLACE(IF(VLOOKUP(A1,Sheet2!$A$1:$C$6,2),"+"&A1,"")&TEXT(VLOOKUP(A1,Sheet2!$A$1:$C$6,2),"×0%;;")&TEXT(VLOOKUP(A1,Sheet2!$A$1:$C$6,3),"!+0;!-0;"),1,1,) C1に、 =A1*VLOOKUP(A1,Sheet2!$A$1:$C$6,2)+VLOOKUP(A1,Sheet2!$A$1:$C$6,3) と入力して下さい。

sacsac5
質問者

お礼

助かりました。 ありがとうございました! 勉強にもなりました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 各数値範囲の係数と切片の一覧表を別のシートに作ってVLOOKUPで参照するといいと思います。 別のシートが[Sheet2]とすると、[Sheet2]に、   A  B  C 1 100 0.40  0 2 200 0.30 20 3 300 0.25 30 4 ・・・・・ のように作成しておきます。 そうしたら、元のシートのA1にAの値を入力するとして、 数式は、B1に、 =A1&"×"&TEXT(VLOOKUP(A1,Sheet2!$A$1:$C$3,2),"0%")&TEXT(VLOOKUP(A1,Sheet2!$A$1:$C$3,3),"!+0;!-0;") で、 最終の値は、C1に、 =A1*VLOOKUP(A1,Sheet2!$A$1:$C$3,2)+VLOOKUP(A1,Sheet2!$A$1:$C$3,3) となります。

sacsac5
質問者

補足

丁寧にありがとうございます。 実は、本当にやりたいものを簡易化した書いたのですが、非常に複雑な式を教えていただいたので、 どの部分を参考にすればわからなくなってしまいました。。。 実際に行いたいのは、源泉徴収額の計算で、  (A) ──────── 0~135416   → 54167円 135417~149999 → A×40% 150000~299999 → A×30%+15000円 300000~549999 → A×20%+45000円 550000~833333 → A×10%+100000円 833334円以上  → A× 5%+141667円 というのがすべてです。 シートを別にしても、おっしゃるように、 最後に該当するシートに戻ってくればいいのですが、 上記をすべてまかなえればOKなのです。 すみません。 最初からこういえばよかったのですが。。。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

=A1*CHOOSE(A1/100,.4,.3)+CHOOSE(A1/100,0,20) ただし100未満や300以上の場合は#VALUEが表示します。

sacsac5
質問者

お礼

早速ありがとうございました!

関連するQ&A

  • 二つの条件を満たす数式

    エクセルで二つの条件を満たす数式を教えて下さい。 IF関数で一つの条件なら出来たのですが、二つだとどうすればいいのか 分かりません(汗) セルA1の数字によりセルB1に数式を入れたいと思います。 条件は、 セルA1が30000以下ならセルBは315 セルA1が30000以上ならセルBは525 以上です。どうぞよろしくお願い致します。

  • 【エクセル】条件によって数式を削除する

    エクセルで以下のようなことは実現可能でしょうか? たとえば ・A1の値が「a」のときはC1にはB1を検索値としたルックアップの値を返す。 ・A1の値が「b」のときはC1はルックアップを使用せず直接値を入力させる。 つまり、A1の値によって、C1セルの数式を削除し、完全に空白にするということです。 「IF」関数等ではC1セルを空白にできても数式は残ってしまうため、実現することはできません。 わかりやすく言えば、「条件付書式」では条件によってセルの文字色や背景色を変更することしかできないと思いますが、それをセルの値も含めて変更するような感じです。 方法がお分かりの方、お教えください。

  • エクセル 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、A2,A3セルを使って A1セルの値が順次変化していく場合、変化する前の古い値をA2、A3セルに保存しておきたいのです。 プログラム的に書くと、 IF A1が変化したとき THEN A3=A2 A2=変化する前のA1 ENDIF みたいなことをしたいのです、VBAを使ってマクロで作るのは簡単ですが、 できれば、マクロは使わず、ワークシート上だけで、関数や数式だけで作ることはできませんか たとえば、=IF( A1<>A2, COPY A2 TO A3 ) みたいなある条件があったときにコピーできるようなことが出来れば可能だと思うのですが

  • EXCEL2002でA1セルがif文だったらB1セルに

    こんにちは。 EXCEL2002です。以下のようにするにはどのような関数を使えば良いのか教えてください。 A1セルが・・・・ if文だったらB1セルに"○" if文以外の数式だったらB1セルに"△" 文字や数字の値だったらB1セルに"×"  と表示する。 条件付書式などの回答を見ていろいろ調べましたが、分かりませんでした。よろしくお願いします。

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

    エクセルの数式をどのように入れたら良いでしょうか? いつもこちらでお世話になっています。 今回も教えて頂きたく質問させていただきます エクセルについてですが、 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のセルに上書きで(繰り返し)数字を入力させ 数式が消えないようにしたいのですが どのようにすればよいでしょうか? 分かりずらい説明で申し訳ありませんが 大変困っているので、アドバイス頂けると助かります。

  • 一つのセルでIF関数を二つ使いたい

    二つのセルの値を割って、%を表示させるために、三つ目のセルには 「=1-(B1/A1)」を入れていたのですが、そこに、二つのセルが空白の時にはエラー表示にならないようにIF関数を使い、三つ目のセルは 「=IF(ISBLANK(A1),"",(1-(B1/A1)))」 という数式にしました。 その数式にさらに、もし二つのセルの値が「0」の時には、結果を「0%」として表示させたくて、三つ目の数式の中にもうひとつのIF関数を同時に使いたいのですが、 一つのセル内に、IF関数を使って結果をうまく表示させるには、どのような数式にすれば良いでしょうか??

  • Excel で別のセルの数式を表示

    Excel 2003 で、あるセルの数式を別のセルで表示させることはVBA無しで出来ますでしょうか? A1に「=A2」とあったときに、A3にA1を引数とした何がしかの関数を用いることで「=A2」と表示させる、というイメージです。

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

    入力数値によって数字が変わるという計算式を作成していますが 例 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 わかりづらい説明で申し訳ありませんが ご教授宜しくお願い致します

  • 数式によって導き出した数値の切捨

    エクセルでセルに数式を入れて導き出した値を自動的に小数点以下切捨てにする方法がわかりません。 (例・セルの計算式) =A2(他のセル。ここでは3200とします)/1.2(値は2666.6666になります) セルに返される値は小数点以下を切上げて「2667」。 これを切捨して2666にしたい。 どなたか方法を教えてください。 たいへんわかりづらい説明だと思いますが宜しくお願いいたします。

専門家に質問してみよう