• 締切済み

IF関数を短くする方法(階層が深すぎる)

A列に任意の数値が入っています。 そのときB列に、 「A1<999」なら「A1×5.0」して四捨五入 「1000<A1<2000」なら「A1×4.0」して四捨五入 「2000<A1<3000」なら「A1×3.0」して四捨五入 「3000<A1<4000」なら「A1×2.0」して四捨五入 「4000<A1<5000」なら「A1×1.5」して四捨五入 「5000<A1<6000」なら「A1×1.0」して四捨五入 とした計算式を入れたいとおもってます。 IF関数にするとものすごく長くなってしまいます。 短くしたり、他に適応する関数はあるでしょうか? よろしくお願いいたします。

みんなの回答

noname#204879
noname#204879
回答No.5

何処か空いている範囲に   0  5 1000  4 2000  3 3000  2 4000 1.5 5000  1 6000 0.5 のデータを入力して、当該範囲に(例えば) table という名前を付けておけば =ROUND(A1*VLOOKUP(A1,table,2),0) でよろしいかと。 ただし、6000以上の場合は 0.5 としておきました。また、小数点以下を四捨五入としておきました。

  • NNAQ
  • ベストアンサー率56% (104/184)
回答No.4

 C列  D列 1  0   5 2 1001  4 3 5001  3 4 10001 2 5 50001 1.5 こんな対応表を作って B1 =ROUND(LOOKUP(A1,$C$1:$C$5,$D$1:$D$5)*A1,0)

noname#22222
noname#22222
回答No.3

0~999=5 1000~1999=4 2000~2999=3 3000~3999=2 4000~4999=1.5 5000~5999=1.0 ならば =CHOOSE(A1/1000+1,5,4,3,2,1.5,1) この値を A1に×ということなので =A1*CHOOSE(A1/1000+1,5,4,3,2,1.5,1) さらに、四捨五入するということなので =ROUND(A1*CHOOSE(A1/1000+1,5,4,3,2,1.5,1),0)

isana21
質問者

補足

ありがとうございます。 データを確認したところ、 ~1000 1001~5000 5001~10000 100001~50000 … と刻んでいきます。 IF関数だと7階層ぐらいまでしかできないので、 どうしようか?と思っていたところです。 参考にさせていただきます。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.2

こんにちは 6000以上の入力があった場合でも A1×1.0 でいいのでしょうか? 四捨五入は何処の位まで求めるのでしょうか? =ROUND(CHOOSE(MIN(INT(A1/1000)+1,6),A1*5,A1*4,A1*3,A1*2,A1*1.5,A1),0) こんな感じで、後はご自身で調整できますでしょうか?

isana21
質問者

補足

ありがとうございます。 データを確認したところ、 ~1000 1001~5000 5001~10000 100001~50000 … と刻んでいきます。 掛け算の値は例として出したので実際は規則性の無い数字になります。参考にさせていただきます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Vlookup 等が使えますが・・・。 >「A1<999」なら「A1×5.0」して四捨五入 >「1000<A1<2000」なら「A1×4.0」して四捨五入 1000とか2000はどう扱われるのでしょうか? 通常は<= や <= などで繋がないと除外されてしまいますが?

関連するQ&A

  • エクセルの関数。お願いします!

    任意の桁数で四捨五入するROUND関数についてお願いします。 A1「5678.492」の数値。 (ア)小数点以下を四捨五入しなさい。 (イ)1の位を四捨五入しなさい。 =ROUND(A1,○)の○には何が入るんでしょうか?

  • IF関数とROUNDの組み合わせが上手くいきません。

    初級者ですが、仕事で必要なので助けてください。 エクセル2003で、A1~F1の数字を掛算割算して、結果をG1に反映します。G1の計算結果が9万9千9百までは10の位まで四捨五入、10万以上なら100の位を四捨五入というふうにしたいのですが、どうも上手くいきません。(そもそもIF関数では無理なのでしょうか?) =IF(G1>=99999,ROUND(A1*B1/C1*D1*F1,-3),G1<=100000,ROUND(A1*B1/C1*D1*F1,-4)) この式をちょっと変えたりして色々試してみているのですが、-3,-4の設定で10の位、百の位は変えられても99999/100000の間では変化してくれません。どうすればよいのでしょうか。

  • IF関数について教えて下さい

    入力セルB1には数値0~9と”ヌル”が入ります。 セルB2でA1+B1の計算 B2の計算条件は、B1が””の時””が出力 B1が0(数値のゼロ)の時数値のゼロが出力 B1が1~9の時はA1+B1の演算をさせたいのですが、IF関数でできますか 関数の組み方をお願いします。

  • IF関数の複数分岐

    IF関数の複数分岐について質問です。 条件が多すぎて私の知識では手に負えない状態なので、どなたか教えてくださると助かります。 ・A1が○だったら● ・A1が△、かつB1が▽だったら▲÷2 ・A1が△、かつB1が□だったら▲÷4 ・上記のどれにも当てはまらない場合は0 この条件でどうにかifでクリアできませんでしょうか? それに加えて、求められた値を四捨五入し1000の位で丸めたい(単位を千)にしたいのです。 どなたか宜しくお願いいたします。

  • エクセル関数?教えてください。これはどうすればできますか?未熟者です

    A列÷B列の答えの数値を削除と四捨五入し、プラス表示とマイナス表示をしたい。 答えは2パターンになります。 (1)A列÷B列の答え1.091763・・・などとなります。それを小数点一位以上(1.9)を削除し小数点五位(6)を四捨五入して数値で表したいのです。 そして出た答え、小数点以上が(1.)の場合プラス表示とし918で完成させたい。 (2)A列÷B列の答え0.991763・・・などとなります。それを小数点一位以上(0.9)を削除し小数点五位(6)を四捨五入して数値で表したいのです。 そして出た答え、小数点以下(0.)の場合はマイナス表示としと-918で完成です。 うまく説明できませんが、よろしくお願いします。

  • IF関数ですと長くなってしまうので・・・

    既出でしたらすみません。 A列  B列  C列 1    1    出勤 2    2    出勤 5    3    休み      4    休み      5    出勤 というデータが入っていたとしまして、 C列の「出勤」(実際は時間が入っていますが)の場合には B列の数値をA列に表示させたいのですが、 出勤の番号を上から順番に表示させる関数がわかりません。 (今A列に入っている数値が本来表示させたい結果です) IF関数で出来ない事はないですが、TRUE,FALSEだけを繰り返していくと そうとう長くなってしまうので、何か良い方法がないでしょうか? よろしくお願い致します。

  • Excelの関数で

    Excel2007を使用しています。 次のような場合のC列にはどのような関数を入れればよいのでしょうか? A    B    C 1 v3   100 100×1.08(四捨五入) 2 v8 100   100  3 空白 100 100 ・A列がv3の場合はC列はB列×1.08(四捨五入) ・A列がv8or空白の場合はC列=B列 以上、よろしくお願いいたします。

  • Excel2002 IF関数の組み合わせ

    初歩的な問題ですが、組み合わせ方が他のサイトに例が見つからなかったので質問します。 IF関数で、 D列に、『もしA列が○○なら、B列の数値をもってきなさい。そうでなければC列の数値を持ってきなさい。』 というような単純な数式が入っているとして、ここに別の条件をまた付け加えたくなったので、どうすればよいか 質問させて下さい。 内容は、上記の条件のあとに、『E列が△△なら、F列の数値を持ってきなさい。』 というものです。 式としては IF(A1="大阪",B1,C1) 追加したいのは IF(E1="国語",F1,C1) ということで、全く違う条件を追加したい場合はどのように組み合わせればよいでしょうか?

  • excel関数についての質問です。

    A列に1000未満の様々な数字がはいっており、 現在関数を使って2段階で下記のように加工しているのですが それを1つにまとめたいと思い試行錯誤しておりますが、うまくいきません。 【例】281.25→282 、 28.125→28.2 、 2.8125→2.82  、 0.28125→0.29    15→15.0  、 1.5→1.50  、      ※3桁表示にしたい(○○○、○○.○、○.○○)     ※上記いずれも四捨五入でなく繰上げたい。    現在のところ B列には【繰上げの関数】 =IF(LEN(TRUNC(A1))>2,ROUNDUP(A1,0),IF(LEN(TRUNC(A1))>1,ROUNDUP(A1,1),ROUNDUP(A1,2))) C列には【桁数をそろえる為の関数(たとえば0.5を0.50とするため)】 =IF(LEN(TRUNC(B1))>2,TEXT(B1,"#0"),IF(LEN(TRUNC(B1))>1,TEXT(B1,"0.0"),TEXT(B1,"0.00"))) B列とC列の関数を合体して1つにまとめたいのですが、うまくいきません。 どなたかご教授いただけないでしょうか? ちなみにそれぞれの関数は私が作ったものではありませんが、 それぞれの関数自体は何とか理解できます。よろしくお願いします。

  • if 関数について

    「もし、セルa1に何かの数値が入力されたら、a1×b1を計算して、その結果を表示せよ」という場合の関数は、=IF(a1="","",a1*b1)だと思います。 この数式を下方のセルにコピーすると=if(a2="","",a2*b2)となってしまいますが、計算式の+a1×b1の部分を変えたくない場合は、どうすればよいのでしょうか? 【この関数式の使用方法】 毎日変動する株価による自分の利益(又は損失)を一覧表にしたい。 a1の数値は、毎日変動する株価です。(だから、コピー結果a2 a3 a4 と変化しても良い。) b1の数値は、自分の所有する株数です。(株の所有数は変わらない) 従って、変動するのは毎日の株価と計算結果だけということになり、自分の所有株数(b1の値)が入力されているセルの場所が変わっては困るのです。 以上、よろしくお願いいたします。

専門家に質問してみよう