• ベストアンサー

エクセルでif関数を組んだのですが。。。

エクセルでif関数を使って式を造ったのですが、上手く条件を選択 しません。何がおかしいのか分からない状態でこまっています。  どなたかお詳しい方、教えて下さい。 詳細は添付資料にあります。 a1 20 b1 1 c1 -1 d1 合 e1 19.5 =if((a1-abs(c1))<=e1<=(a1+b1),"合","不合") この式を入れると d1は不合になってしまいます。

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

  • ベストアンサー
回答No.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以下」と書かなければならないのです。

katotyan2
質問者

お礼

ご回答ありがとうございます。 詳しい説明に感謝致します。

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

条件の(A1-ABS(C1))<=E1<=(A1+B1)が間違いです。 下記のどちらかに直してください。 =IF(A1-ABS(C1)<=E1,IF(E1<=A1+B1,","合","不合"),"不合") または =IF(AND(A1-ABS(C1)<=E1,E1<=A1+B1),"合","不合")

katotyan2
質問者

お礼

ご回答ありがとうございます。 上手く選択できました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

式を間違いました。 =IF(AND(A1-ABS(C1)<=E1,E1<=(A1+B1)),"合","不合")

katotyan2
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

おそらくは次の式にすればよいでしょう。 =IF(AND(A1-ABS(C1)<=1,E1<=(A1+B1)),"合","不合")

katotyan2
質問者

お礼

ご回答ありがとうございます。 上手く選択できました。

関連するQ&A

専門家に質問してみよう