• 締切済み

IF関数

みなさん教えてください。 下記のIF関数で、正確な数値が出ません。ドコを訂正すればよろしいでしょうか?Vlookupだと参照する数値を入力する必要がある為、IF関数で入力したいと思っております。 検索値(E3) 計算式 これ以下 引数 1000 9700 3000 17500 5000 21000 10000 26900 15000 35300 20000 43600 25000 51300 30000 59400 35000 67300 40000 75300 45000 83500 50000 91400 55000 99500 60000 106600 これは数値がおかしくなって駄目でした。 =IF(E3<1000,IF(E3<3000,IF(E3<5000,IF(E3<10000,IF(E3<15000,9700,17500),21000),26900),35300),IF(E3>20000,IF(E3>25000,IF(E3>30000,IF(E3>35000,IF(E3>40000,43600,51300),59400),67300),75300),IF(E3>45000,IF(E3>50000,IF(E3>55000,IF(E3>60000,83500,91400),99500),106600)))

みんなの回答

  • yu--u
  • ベストアンサー率10% (16/149)
回答No.4

こんにちは。 基本的にどのような値を求めたいのかはわからないのですが、普通に考えれば不等号か数字を比べる順番が間違っていると思います。 IFの後には(比較,YESの場合,NOの場合)となるのでそもそも最初の時点で1000よりも小さかったら3000と比べるの時点で違うのでは無いでしょうか? 後はIFが多すぎるのでこれであれば、セルを分ける必要があります。 後は今のままの式では45000より大きかった場合の値が入って無いと思います。 わかりにくかったですけどがんばってください。

hyokohama
質問者

お礼

=IF(E3<25001,IF(E3<20001,IF(E3<15001,IF(E3<10001,IF(E3<5001,IF(E3<3001,IF(E3<1001,9700,17500),21000),26900),35300),43600),51300),IF(E3>25000,IF(E3>30000,IF(E3>35000,IF(E3>40000,IF(E3>45000,IF(E3>50000,IF(E3>55000,106600,99500),91400),83500),75300),67300),59400))) ↑の式で自己完結できました。 ありがとうございます。

noname#123709
noname#123709
回答No.3

#1です。 間違えました。 無視して下さい。

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

条件が逆ですね。それとも最初だけ不等号が逆向き? 初めにE3<1000ですから以降のE3<3000...はすべて真になります。 E3<15000→E3<1000の順番で範囲を狭めるようにしなければ駄目です。 それにこのようにネストしたんじゃ大変でしょう。 =VLOOKUP(E3,表の範囲,2,TRUE) ただこのままだとE3<1000はエラーになります。 表の初めに金額1~1000までの時の金額を追加してください。 1~999が9700なら1行ずれてますね。

noname#123709
noname#123709
回答No.1

IF関数のHELPにも書いてあると思いますが、ネスト(入れ子)は最大7つ までとなっています。現在の数式ではそれを超えてます。

hyokohama
質問者

補足

=IF(E3<1001,IF(E3<3001,IF(E3<5001,IF(E3<10001,IF(E3<15001,IF(E3<20001,IF(E3<25001,9700,17500),21000),26900),35300),43600),51300),IF(E3>25000,IF(E3>30000,IF(E3>35000,IF(E3>40000,IF(E3>45000,IF(E3>50000,IF(E3>55000,106600,99500),91400),83500),75300),67300),59400))) ↑でできるはずなのですが・・・ 質問の式は少し間違ってましたね。 普通に7つ入れるとエラーがでますが、↑の式だとエラーはでませんのでネストの制限には引っかかってません。ドコがおかしいのでしょうかね?

関連するQ&A

  • IF関数について

    みなさん教えてください。 所定の数値から所定の数値の間だった場合は引数を返すと いった感じにしたくて、ある程度の数でしたら下記の 関数でいいんですが、繰り返しが多いからかエラーが出ます。他にちょうどいい関数があるのか、処理方法があれば 教えてください。お願いします。 検索値(G21) 計算式 15000(例) ここが問題 これ以上 これ未満 引数 10001 20000 1000 20001 30000 2000 30001 50000 3000 50001 100000 5000 100001 150000 7500 150001 200000 10000 200001 250000 12500 250001 300000 15000 300001 400000 20000 400000 30000 これはエラーが出て駄目でした。 =IF(G21<10000,"メーカー保証のみ",IF(G21<20000,"1,000円",IF(G21<30000,"2,000円",IF(G21<50000,"3,000円",IF(G21<100000,"5,000円",IF(G21<150000,"7,500円",IF(G21<200000,"10,000円",IF(G21<250000,"12,500円",IF(G21<300000,"15,000円",IF(G21<400000,"15,000円",IF(G21<9999999,"30,000円")))))))))))

  • Excel IF関数での循環参照回避方法

    IF関数を使用し、計算式を作成したいのですが循環参照になってしまい困っています。 (計算式内容) A1:2010.01(日付を入力) E1:A1同様の形式で日付を入力 E2:数値を入力 A2に、=IF(A1=E1,E2,A2) A1とE1の日付が同じならば、E2の数値を表示し、異なる場合は現在A2に表示されている数値を表示したいのですが、循環参照させずに計算式を作成する事は可能でしょうか?

  • IFとVLOOKUP関数を組み合わせて

    IFとVLOOKUP関数を組み合わせて条件に一致させた数値を出したいのですが引数の記述がわかりません具体的にはセルB5の値が2以上10未満の時は4,100を10以上15未満の時は6,500を15以上25未満の時は11,300を25以上35未満の時は16,100を35以上45未満の時は20,900をセルD5に標示させたい時はどんな記述をすればよろしいでしょうか?IF関数VLOOKUP関数を用いて別のセルにこの参照をさせる表(セルA7に2,B7に4,100 A8に10,B8に6,500 A9に15,B9に11,300…)を作成するすればできると思うのですが…

  • Excelで、IF関数を使用して空欄にしたところの数値を使用したいのですが

    Excel初心者です かなり特別なケースだと思うのですが IF関数を使って、{上と同じ数値なら空欄、そうでない場合は計算結果を表示} というのを、 E9 =IF(SUM(E8,C9)-D9=E8,"",SUM(E8,C9)-D9) という関数を使って作ってみました。 仮に、下のような数値の並びの場合 1 22 333 333 4444 4444 4444 55555 という場合 1 22 333 4444 55555 というように表示したいのですが この関数を見ていただくとわかるとおり 一つ上の数値を参照して計算するため 空欄であれば、そのセルの数値を”0”として認識してしまい 下の計算結果がハチャメチャなものになってしまいます。 空欄を表示しても、数値は参照したい というような場合、どのようにしたらいいのでしょうか もしくは、上の関数を使用した場合 E8が空欄の場合はE7の数値、E7も空欄の場合E6を参照する、というやり方はあるのでしょうか。 自分でも調べてみたのですが、同じようなケースの質問がなかったため質問させていただきました。 どうぞよろしくお願いいたします。

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

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

  • エクセルのif関数のエラー

    エクセルでif関数を使ってデータ処理をしたのですが、上手くいき ません。何がおかしいのかが分からない状態で困っています。 状況  A B C D E 1 : + = ? 関数式 とセルに入力してあるとします。(A1=:,B1=+,C1==,D1=?) 関数式のセルに以下の様に入力しました。 =IF(ISBRANK(D1)=TRUE,E1="",VLOOKUP(D1,$A$1$B$15,2,FALSE)) 目的はVLOOKUPだけではD1が空白の時にE1にNAMEと表示されるのを 避ける事でした。 そうすうとD1にA列の数字を入力すると、それに対するB列をE1に 表示するようになるのですが、D1が空白の時はB1が表示されて しまってます。  また一旦D1に入力した後、D1をデリートして空白にしてもE1には もとの数値がそのまま表示されたままになってしまいます。 文章で表現している分、かなり分かりにくい説明になってしまって いますが、お詳しい方いましたらアドバイスお願い致します。

  • エクセルの関数とグラフについて

    VLOOKUPを使って入力したIDNoに対して、別々のシートから検索するため次のような関数をいれています。=IF(ISERROR(VLOOKUP($E1,'シート名(1)’!$B$5:$IV$254,COLUMN(G6),0)),"",VLOOKUP($E1,'シート名(1)'!$B$5:$IV$254,COLUMN(G6),0))&IF(ISERROR(VLOOKUP($E1,'シート名(2)'!$B$5:$IV$254,COLUMN(G6),0)),"",VLOOKUP($E1,'シート名(2)'!$B$5:$IV$254,COLUMN(G6),0)) この関数から得られた数値を折れ線グラフに反映させたいのですが、グラフに数値として認識されません。セルの書式設定は数値にしています。 ネットで色々調べてみて、この関数の最後に)/1を追加させた式を入力すると数値は認識されるようになりました。しかし空白の場合に#VALUEになり”プロットしない”に設定しても0にグラフが出てしまいます。 また同じ表で日付に対しても日付で表示されなかったので=IF(ISERROR(VLOOKUP(E$1,'シート名(1)'!$B$5:$IV$254,COLUMN(AC6),0)),"",TEXT(VLOOKUP(E$1,'シート名(1)'!$B$5:$IV$254,COLUMN(AC6),0),"ge.m.d"))&IF(ISERROR(VLOOKUP(E$1,'シート名(2)'!$B$5:$IV$254,COLUMN(AC6),0)),"",TEXT(VLOOKUP(E$1,'シート名(2)'!$B$5:$IV$254,COLUMN(AC6),0),"ge.m.d"))の関数を入力したところ日付が表示されるようになったのですが、空白の場合は”M33.1.0”となりグラフ上でも表示されてしまいます。 どうすれば日付や数値としてグラフ上に反映させられるのか教えてください。また空欄の場合には0にポイントされないM33.1.0にならない方法も教えてください。 エクセルは2003です。 エクセル初心者のため説明不足等あるとは思いますがよろしくお願いします。

  • Excel IF関数を別の関数で省略するには?

    次のような関数を省略、追加するにはどうしたらよいでしょうか? 考えている内容は電気料金の計算です。 単位がW、VAの2つが混ざった表でバラバラに並んでいます。 この表の金額の合計値を出して他のシート上に結果を表示させるということを考えています。 =IF(E23<=10,$E$29*G23,IF(AND(10<E23,E23<=20),$E$30*G23,IF(AND(20<E23,E23<=40),$E$31*G23,IF(AND(40<E23,E23<=60),$E$32*G23,IF(AND(60<=E23,E23<=100),$E$33*G23,IF(100<E23,$E$34*G23)))))) ある物の数値が   0~ 10ならば  0~ 10の時の値段と物の個数を掛ける  10~ 20ならば 10~ 20の時の値段と物の個数を掛ける  ・  ・  ・ 100~   ならば   ~100の時の値段と物の個数を掛ける   といったところまでは上手くいった気がするのですがとても長くなってしまいます。 VLOOKUP関数を使えばいいと調べたらわかったのですが使い方がわかりません。 またこの関数にさらに追加したい条件として 100を超えた場合、50毎に値段を追加する さらに別の数値の条件で   0~ 50ならば  0~ 50の時の値段と物の個数を掛ける  50~100ならば 50~100の時の値段と物の個数を掛ける 100を超えた場合、50毎に値段を追加する を追加したいのですが同様にしたところエラーが出ました。

  • IF関数で出した数値をSUM関数で使う

    2010エクセルでの関数について質問があります。 文章での説明でどこまで詳しくご説明できるか不安ですが お付き合い願います。 IF関数で =IF(A13>=25,"10","")と計算し、 セル内に、「10」と表示しています。 さらに、 上記、関数から表示した「10」を SUM関数を使い、 =SUM(A13,B13)と計算しました。 しかし、 IF関数で出した「10」が認識されず足し算されません。 「真の場合」や「偽の場合」で出された数値は 数値として認識されていないのでしょうか? 例えば・・・ B13のセルの数値が「200」であれば、SUM関数を入力しても 「10」が足されることなく、「200」のままで表示されるということです。 どのような方法ならば、足し算されるのでしょうか。 または、関数の使い方が間違っているのでしょうか。 説明が分かりにくく申し訳ありませんが、 宜しくお願い致します。

  • こちらの関数式を考えて下さい (IF関数)

    運送会社の料金表を作っています。 お客様のデータと共に運送料も入力しています。 そこで、重さと距離を入力すれば、運送料金が出るような関数を教えていただきたいと思います。 画像を参照ください。 入力するデータに重さ85 距離125を入れるとC2に参照データの1500が自動的に入る関数です。 参照するデータは重さ85の場合80以上100以下なので13行を、距離125は100以上200以下なのでE列を見て、E13の1500が該当します。よって入力するデータのC2は1500の数値が入ります。 同様に重さ45 距離70 ではD11の900が入ります。 C2欄に1500が、C3の欄に900が自動的に入る関数を教えてください。 よろしくお願いいたします。     

専門家に質問してみよう