最速怪談選手権

エクセルでif関数を使って式を造ったのですが、上手く条件を選択
しません。何がおかしいのか分からない状態でこまっています。
 どなたかお詳しい方、教えて下さい。

詳細は添付資料にあります。

a1 20
b1 1
c1 -1
d1 合
e1 19.5

=if((a1-abs(c1))<=e1<=(a1+b1),"合","不合")

この式を入れると d1は不合になってしまいます。

A 回答 (4件)

>(a1-abs(c1))<=e1<=(a1+b1)



a <= b <= c
と書くと
「a <= b」が評価され、ここが「TRUEかFALSE」になります。

そして
「TRUEかFALSE」 <= c
が評価されます。

エクセルでは
「TRUEかFALSE」 <= c
の結果は「常にFALSE」です。

これは「エクセルは特殊なので、TRUEかFALSEの真偽値を数値と比較すると、どんな数値よりも大きい」と判定されてしまうからです(他の言語ではそんな変な事は起きないのですが)

>(a1-abs(c1))<=e1<=(a1+b1)

(a1-abs(c1))<=e1

e1<=(a1+b1)
の2つに分けて「両方成り立てば真」と書かなければなりません。

なので
>(a1-abs(c1))<=e1<=(a1+b1)

And((a1-abs(c1))<=e1,e1<=(a1+b1))
に直さなければなりません。

どんな言語もそうですが
a <= b <= c
みたいな書き方は出来ないです。今までそういう書き方が出来るプログラム言語を見た事がありません。

「bはa以上c以下」は「bはa以上、かつ、bはc以下」と書かなければならないのです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

詳しい説明に感謝致します。

お礼日時:2009/09/15 08:43

条件の(A1-ABS(C1))<=E1<=(A1+B1)が間違いです。


下記のどちらかに直してください。

=IF(A1-ABS(C1)<=E1,IF(E1<=A1+B1,","合","不合"),"不合")
または
=IF(AND(A1-ABS(C1)<=E1,E1<=A1+B1),"合","不合")
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

上手く選択できました。

お礼日時:2009/09/15 08:42

式を間違いました。


=IF(AND(A1-ABS(C1)<=E1,E1<=(A1+B1)),"合","不合")
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

丁寧に訂正頂きありがとうございます。

お礼日時:2009/09/15 08:41

おそらくは次の式にすればよいでしょう。


=IF(AND(A1-ABS(C1)<=1,E1<=(A1+B1)),"合","不合")
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

上手く選択できました。

お礼日時:2009/09/15 08:39

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