人生最悪の忘れ物

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)などです。よろしくお願いします。

A 回答 (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になります。
    • good
    • 3
この回答へのお礼

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

お礼日時:2003/08/23 16:32

NO.1です



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

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))

で十分です。
    • good
    • 1

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でそれ以外に
してしまっても良いと思います。
    • good
    • 0

こんにちは、式の中で下記の部分が間違っています


30000<=C2<70000

このようにしたらいかがでしょうか?
=IF(C2<30000,B2*0.05,
IF(AND(30000<=C2,C2<70000),B2*0.07,
IF(C2>=70000,B2*0.1)))
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています