• ベストアンサー

エクセル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