- ベストアンサー
エクセルでif関数を組んだのですが。。。
エクセルでif関数を使って式を造ったのですが、上手く条件を選択 しません。何がおかしいのか分からない状態でこまっています。 どなたかお詳しい方、教えて下さい。 詳細は添付資料にあります。 a1 20 b1 1 c1 -1 d1 合 e1 19.5 =if((a1-abs(c1))<=e1<=(a1+b1),"合","不合") この式を入れると d1は不合になってしまいます。
- みんなの回答 (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以下」と書かなければならないのです。
その他の回答 (3)
- mshr1962
- ベストアンサー率39% (7417/18945)
条件の(A1-ABS(C1))<=E1<=(A1+B1)が間違いです。 下記のどちらかに直してください。 =IF(A1-ABS(C1)<=E1,IF(E1<=A1+B1,","合","不合"),"不合") または =IF(AND(A1-ABS(C1)<=E1,E1<=A1+B1),"合","不合")
お礼
ご回答ありがとうございます。 上手く選択できました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
式を間違いました。 =IF(AND(A1-ABS(C1)<=E1,E1<=(A1+B1)),"合","不合")
お礼
ご回答ありがとうございました。 丁寧に訂正頂きありがとうございます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
おそらくは次の式にすればよいでしょう。 =IF(AND(A1-ABS(C1)<=1,E1<=(A1+B1)),"合","不合")
お礼
ご回答ありがとうございます。 上手く選択できました。
お礼
ご回答ありがとうございます。 詳しい説明に感謝致します。