- ベストアンサー
エクセルIF関数の入れ子について
こんにちはエクセルIF関数の入れ子について 労働力1000以上 *** 500以上1000未満 ** 500未満 * と表示しようと思い、セルに =IF(D4>=IF(D4>=500,"**","*")=1000,"***") ※D4は労働力の数値 と入力したらFALSEが表示されました。 入れ子をしなければ表示が正常にされるのですが 入れ子をするとFALSEになります。 原因がわからないので教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
この計算式だと、 まず最初に IF(D4>=500,"**","*") を計算します。 その結果は、"**"か"*"。 次に、その結果が1000かどうかを比較するのですが、どちらも1000ではないので、比較式の結果はFALSEになります。 そのあとに、このFALSEとD4を比較することになります。 どうも、FALSEはどの数字よりも大きい扱いになっているようなので、比較結果はFALSEになります。 しかも、外側のIFの条件式は、D4>=IF(D4>=500,"**","*")=1000 ということになり、"***"は、条件が真の場合の式で、条件が偽の場合の式が指定されていないことになります。 正解は、 =IF(D4>=1000,"***",IF(D4>=500,"**","*")) ですね。
その他の回答 (5)
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。
お礼
ありがとうございました できました
- mu2011
- ベストアンサー率38% (1910/4994)
論理値(TRUE、FALSE)=1000で必ずFALSEになります。 仮にIF関数の場合、 =IF(D4>=1000,"***",IF(D4>=500,"**","*")) その他(一例) =LOOKUP(D4,{0,1,500,1000},{"","*","**","***"})
お礼
できました。その他回答もいただきありがとうございました。
- don9don9
- ベストアンサー率47% (299/624)
IF関数は =IF(論理式,真の場合,偽の場合) 真の場合、偽の場合を省略するとTRUE、FALSEを返します。 >=IF(D4>=IF(D4>=500,"**","*")=1000,"***") この式だと、論理式が「D4>=IF(D4>=500,"**","*")=1000」 真の場合が"***"、偽の場合は省略(=FALSEを返す) という式になってしまいます。 だから、結果がFALSEになっているのです。 式を以下のように修正して下さい。 =IF(D4>=1000,"***",IF(D4>=500,"**","*"))
お礼
わかりやすかったです。ありがとうございました。
- STICKY2006
- ベストアンサー率29% (1536/5269)
ん。。。?式が変なんじゃね?? =if(D4>=1000,"***",if(D4>=500,"**","*"))
お礼
確かに矛盾した式になってました。ありがとうございました。
- piro19820122
- ベストアンサー率38% (256/672)
入れ子の使い方を間違っています。 =IF(D4>=IF(D4>=500,"**","*")=1000,"***") この数式の場合、まず内部の IF(D4>=500,"**","*") が D4 の値に応じて "**" か "*" を返します。 例えば "**" を返したとすると、数式は IF(D4>="**"=1000,"***") となります。 この条件式がおかしいのは見ればあきらかです。 正しい使い方は、 =IF(D4>=1000,"***",IF(D4>=500,"**","*")) ですね。
お礼
納得しました。ありがとうございました。
お礼
教えていただいたとおりするとできました ありがとうございました(^o^)