• ベストアンサー

エクセルIF関数の入れ子について

こんにちはエクセルIF関数の入れ子について 労働力1000以上     ***     500以上1000未満  **     500未満        * と表示しようと思い、セルに =IF(D4>=IF(D4>=500,"**","*")=1000,"***")  ※D4は労働力の数値 と入力したらFALSEが表示されました。 入れ子をしなければ表示が正常にされるのですが 入れ子をするとFALSEになります。 原因がわからないので教えてください。

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

  • ベストアンサー
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

この計算式だと、 まず最初に IF(D4>=500,"**","*") を計算します。 その結果は、"**"か"*"。 次に、その結果が1000かどうかを比較するのですが、どちらも1000ではないので、比較式の結果はFALSEになります。 そのあとに、このFALSEとD4を比較することになります。 どうも、FALSEはどの数字よりも大きい扱いになっているようなので、比較結果はFALSEになります。 しかも、外側のIFの条件式は、D4>=IF(D4>=500,"**","*")=1000 ということになり、"***"は、条件が真の場合の式で、条件が偽の場合の式が指定されていないことになります。 正解は、 =IF(D4>=1000,"***",IF(D4>=500,"**","*")) ですね。

momonga333
質問者

お礼

教えていただいたとおりするとできました ありがとうございました(^o^)

その他の回答 (5)

noname#140971
noname#140971
回答No.6

A1___B1____C1 400__*______* 600__**____** 1010_***__*** =IF(A1>=1000, "***",IF(A1>=500,"**","*")) =LEFT("***", (A1>=500) + (A1>=1000) + 1) これで、目的は達成できます。 が、質問者の式は=IF(False, "***")となっています。 =IF(D4>=IF(D4>=500,"**","*")=1000,"***") IF(D4>=500,"**","*")が"*"なら =IF(D4>="*"=1000,"***") ↓ =IF(False, "***") 結局は、こういう式を書いているということです。 この場合、表示されるのは False。

momonga333
質問者

お礼

ありがとうございました できました

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

論理値(TRUE、FALSE)=1000で必ずFALSEになります。 仮にIF関数の場合、 =IF(D4>=1000,"***",IF(D4>=500,"**","*")) その他(一例) =LOOKUP(D4,{0,1,500,1000},{"","*","**","***"})

momonga333
質問者

お礼

できました。その他回答もいただきありがとうございました。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.4

IF関数は =IF(論理式,真の場合,偽の場合) 真の場合、偽の場合を省略するとTRUE、FALSEを返します。 >=IF(D4>=IF(D4>=500,"**","*")=1000,"***") この式だと、論理式が「D4>=IF(D4>=500,"**","*")=1000」 真の場合が"***"、偽の場合は省略(=FALSEを返す) という式になってしまいます。 だから、結果がFALSEになっているのです。 式を以下のように修正して下さい。 =IF(D4>=1000,"***",IF(D4>=500,"**","*"))

momonga333
質問者

お礼

わかりやすかったです。ありがとうございました。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.3

ん。。。?式が変なんじゃね?? =if(D4>=1000,"***",if(D4>=500,"**","*"))

momonga333
質問者

お礼

確かに矛盾した式になってました。ありがとうございました。

回答No.2

入れ子の使い方を間違っています。 =IF(D4>=IF(D4>=500,"**","*")=1000,"***") この数式の場合、まず内部の IF(D4>=500,"**","*") が D4 の値に応じて "**" か "*" を返します。 例えば "**" を返したとすると、数式は IF(D4>="**"=1000,"***") となります。 この条件式がおかしいのは見ればあきらかです。 正しい使い方は、 =IF(D4>=1000,"***",IF(D4>=500,"**","*")) ですね。

momonga333
質問者

お礼

納得しました。ありがとうございました。

関連するQ&A

  • EXCELのIF関数の入れ子について

    すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • エクセルのIF関数について

    エクセルのIF関数について お世話になっております。 エクセルのIF関数について教えてください。 あるセルの値がエラーなら0、数値が入っているなら、その数値をそのまま表示するという 関数を作りたいのですが、どのようにすればよろしいでしょうか?

  • Excelのif関数を使ったのですがうまくいきません。

    Excelのif関数を使ったのですがうまくいきません。   | A | B | C | D | E ----------------------- 1 | A | A | A | A | 5 2 | B | A | A | B | 4 3 | C | C | A | C | 2 のようにA1~D4のセルに入力されたA,B,C の組み合わせによって E5のセルに1~5の数字を入れていきたいのですがAAAA~CCCCの組み合わせが 15通りあってif関数では入れ子ができません。 AAABもAABAも同じと判断させて1~5の数字を自動的に入力させたいのですが 何かいい方法はないでしょうか。 教えてください。

  • エクセルの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には もとの数値がそのまま表示されたままになってしまいます。 文章で表現している分、かなり分かりにくい説明になってしまって いますが、お詳しい方いましたらアドバイスお願い致します。

  • Excel IF関数について

    Excelについてなのですが、今大学の課題でやっているのですがもともとパソコン苦手で今すごくくるしんでます。 質問の内容は「D3~D12の値が7以上のときは「a」,3以上7未満のときは「b」,3未満のときは「c」を表示する」という問題(内容少し変えてます)なのですがif関数を使うならどのように入力すればよいですか? 回答おまちしております。

  • エクセルのif関数で8つ以上ある場合について教えて下さい。

    エクセルのif関数で8つ以上ある場合について教えて下さい。 バージョン:エクセル2002 以下のような場合       1,000未満 → A 1,000以上 1,500未満 → B 1,500以上 2,000未満 → C 2,000以上 2,500未満 → D 2,500以上 3,000未満 → E 3,000以上 3,500未満 → F 3,500以上 4,000未満 → G 4,000以上 4,500未満 → H 4,500以上 5,000未満 → I 5,000以上       → J 現在のエクセルバージョンでは、 if関数の7レベルを超えてしまい、Lookup関数では一致した値しか拾ってくれません。 このような場合、以上、未満などの比較演算子を使用した範囲内の数値の分岐結果を取得するには どのようにすればよいのでしょうか? 現在は、次のように表を作成して行っております。     A     B   C  ←セル列  1        1,000  A  2  1,000   1,500  B  3  1,500   2,000  C  4  2,000   2,500  D  5  2,500   3,000  E  6  3,000   3,500  F  7  3,500   4,000  G  8  4,000   4,500  H  9  4,500   5,000  I  10  5,000        J  ↑ セル行 別の関数などを使用してできる場合(VBA不可)などでも構いませんので、 どなたかご教授願います。 宜しくお願いします。

  • エクセルIF関数について

    エクセルIF関数について A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。 という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。 IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか? どなたか教えてください。

  • エクセルのIF関数で

    エクセルのIF関数で、あるセルに"1"を入力したら"10"を表示して、"2"が入力されたら"20"を表示してと・・・・8種類の設定の方法を教えてください。 よろしくお願いいたします。

  • 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…)を作成するすればできると思うのですが…

  • エクセル IF関数について

    IF関数について、皆様に質問です。 セルに入力された数値xがある数値yと同じか大きい場合は"NG"と表示し、数値aがある数値bと同じか小さい場合は"NG"と表示させたいと考えております。 IFを使って式を作成したのですが、『数式が多すぎる』というエラーになってしまいます。 具体的には、 セルB25に入力している数値が8.980の場合、 8.991と同じまたは大きい場合は"NG"と表示させたい。 同じセルB25で、8.969と同じまたは小さい場合は"NG"と表示させたい。 これをこのような式にしてみました。 =IF(B25<=9.991,"NG","",IF(B25>=9.969,"","NG")) これで『数式が多すぎる』というエラーになっています。 教えてgooで調べたのですが、解決には至っていません。 どなたかご教示いただけますでしょうか。