• ベストアンサー

エクセルのセルにFALSEがでるんですけど‥

IF(C2<30000,B2*0.05,IF(30000<=C2<70000,B2*0.07,IF(C2>=70000,B2*0.1))) という式をオートフィルでコピーしたんですけど、答えがちゃんと出るところと、「FALSE]と表示されるところがあります。なぜでしょうか?教えて下さい。 答えが表示されるところは(B2=24000,C2=93000),(B5=9500,C5=20000)などで、「FALSE」と表示されるところは(B3=12000,C3=60000),(B6=18000,C6=54000)などです。よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

こんにちは。maruru01です。 まず、FALSEと表示される原因と、「30000<=C2<70000」という書き方とは関係ありません。 FALSEが出るのは、最後のIF文の第3引数が省略されているからです。 本来 =IF(条件,真の場合,偽の場合) とすべきところを、 =IF(条件,真の場合) とした場合、条件が偽になると、「FALSE」が返されます。 次に、「30000<=C2<70000」という条件ですが、 この式では、まず、 「30000<=C2」 が評価され、その結果「TRUE」か「FALSE」という論理値が返されます。 その結果に対して、 「TRUEまたはFALSE<70000」 が評価されますが、論理値に対して比較演算子を使用すると必ずFALSEになります。 したがって、2番目のIF文の条件は必ずFALSEになり、つまり最後のIF文を評価し、その結果を返します。 なので、 「C2>=70000」 という条件を満たす場合(B2、B5)は、B2*0.1が表示され、 条件を満たさない場合(B3、B6)は、上記の理由で「FALSE」を返します。 なお、数式については、実際はNo.4の方の式でOKになります。

gomarun
質問者

お礼

みなさん大変丁寧にわかりやすく回答してくださってありがとうございます。  おかげ様で理解できました。  また何か質問することがあると思いますのでよろしくお願いします。

その他の回答 (4)

  • kunimaru3
  • ベストアンサー率38% (12/31)
回答No.4

NO.1です よく考えたらこれでいいみたいです =IF(C2<30000,B2*0.05,IF(C2<70000,B2*0.07,B2*0.1))

noname#148473
noname#148473
回答No.3

Excelでは「30000<=C2<70000」のような比較式は使えないです。「AND(C2>=30000,C2<70000)」としないといけません。 ですから、ご質問の関数式は、 =IF(C2<30000,B2*0.05,IF(AND(C2>=30000,C2<70000),B2*0.07,IF(C2>=70000,B2*0.1))) とすれば、FALSE表示はなくなるはずです。 ただ、実際には2番目のIF文が実行される場合には、既にC2>=30000であることが確定していますし、3番目のIF文に入る場合には、既にC2>=70000であることが確定していますので、 =IF(C2<30000,B2*0.05,IF(C2<70000,B2*0.07,B2*0.1)) で十分です。

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.2

IF(C2<30000,B2*0.05,IF(30000<=C2<70000,B2*0.07,IF(C2>=70000,B2*0.1))) 上の式ですが2つめのIFの後の30000<=がいらないのでは ないでしょうか。 IF(C2<30000,B2*0.05,IF(C2<70000,B2*0.07,B2*0.1)) はじめのIFで30000未満 次はELSEの条件の中なので既に30000以上の 条件が満たされていて70000未満だけを指定すれば 良いです。 最後もあえてIFを使わなくてもELSEでそれ以外に してしまっても良いと思います。

  • kunimaru3
  • ベストアンサー率38% (12/31)
回答No.1

こんにちは、式の中で下記の部分が間違っています 30000<=C2<70000 このようにしたらいかがでしょうか? =IF(C2<30000,B2*0.05, IF(AND(30000<=C2,C2<70000),B2*0.07, IF(C2>=70000,B2*0.1)))