プロが教える店舗&オフィスのセキュリティ対策術

困っているのでどうか助けてください。

関数で、セルのA1、B1に数字が入っているとして、
1. A1またはB1がゼロ以下の場合→”-”を返す
(例えば、A1に-110、B1に100と入っていたら、”-”)
2. なおかつ、もし、A1とB1がゼロより小さい場合→A1/B1
(例えば、A1に-110、B1に-100と入っていたら、A1/B1)
3. 1にも2にも当てはまらない場合→B/A
(例えば、A1に110、B1に100と入っていたら、B1/A1)
以上3つの条件を全て一つの計算式に入れたいのですがどうしたら良いのでしょう?
IF、OR、ANDを使ってやってみたのですが、うまくいきません。

IF(OR(A1<=0,B1<=0),"-",IF(AND(A1<0,B1<0),A1/B1,B1/A1))
↑こう入れると、1と3の条件はクリアなのですが、
2の条件を満たしてくれません。”-”と表示されてしまいます。
何がいけないのか、どこをどう直せばいいのか教えていただけると大変助かります。
よろしくお願いします。

A 回答 (7件)

ごめ。

前のは間違い。

=IF(OR(A1<=0,B1<=0),IF(AND(A1<0,B1<0),A1/B1,"-"),B1/A1)

これでいいはず。要は

(1条件は2条件を含む)
(2条件が成立すると1条件は成立しない)
(1条件が成立しないものは全て3条件に該当)

と、ということですよね。
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。

今やってみたらできました!!
わかりづらい説明を御理解下さって感謝です!
本当にどうもありがとうございました!!!

お礼日時:2012/09/07 09:49

論理定義が正しくないものをいくら検証しようとしてもそれは無理!


想定外の結果は、論理宣言に矛盾があることを示している。
どんなに長々とオブラートに包んだ御託並べてもそれも無理!!
それでもQのオカシサに気付かない振りするのは、余程イヤラシイ!!
あなたの宣言文で確かなことは、A、Bともに+のときはB/Aにしたい、これだけ!!、後は2重定義になっている。
論理矛盾からの脱出方法、
A、Bどちらも-のとき:-
A、Bの一方が-のとき:A/B
0デバイドを避けるためには、0を+側に入れるべき。
C1:
=IF(AND(A1>0,B1>0),B1/A1,IF(A1*B1>=0,"-",A1/B1))

あなたがやりたかったことは、これではなかったか??
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。
わかりづらい質問ですみませんでした。
でも、他の方の回答でできました。
ご回答どうもありがとうございました。

お礼日時:2012/09/07 10:00

 こんな方法もあります。



=IF(COUNT(A1,B1),INDEX({"B/A","-","A/B"},(A1<0)+(B1<0)+1),"")
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。

あの、INDEXというのは…?
この通り入れてみたらできませんでした。
でも、どうもありがとうございました!

お礼日時:2012/09/07 09:57

ご相談に書かれた事を整理すると


=IF(A1*B1<=0,"-",IF(A1<0,A1/B1,B1/A1))
といった具合でいいことが判ります。
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。

できました!
いろいろなやり方があるんですね!
本当にどうもありがとうございました!!

お礼日時:2012/09/07 09:56

1~3をまとめると、



もしA1<=0ならば
 もしB1<0ならば、A1/B1
 さもなくば、"-"
さもなくば
 もしB1<=0ならば、"-"
 さもなくば、B1/A1

となります。

=IF(A1<=0,IF(B1<0,A1/B1,"-"),IF(B1<=0,"-",B1.A1))

検証する場合は、以下のような表を作って、表に合否判定を書き込みましょう。

    |A1<0|A1=0|A1>0|
-----+-----+-----+-----+
B1<0 |   |    |   |
-----+-----+-----+-----+
B1=0 |   |    |   |
-----+-----+-----+-----+
B1>0 |   |    |   |
-----+-----+-----+-----+
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。

できました!
合否判定の表もとても役立ちそうですね!
本当にどうもありがとうございました!!

お礼日時:2012/09/07 09:54

=IF(OR(A1<=0,B1<=0),"-",IF(AND(A1<0,B1<0),A1/B1,B1/A1))


ではなく、

=IF(AND(A1<0,B1<0),A1/B1,IF(OR(A1<=0,B1<=0),"-",B1/A1))
こうですね。
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。

今やってみました。できました!!
本当にどうもありがとうございました!!

お礼日時:2012/09/07 09:51

カッコイイやり方は他にもあると思いますが、これでオッケーなんじゃ?



=IF(AND(A1>0,B1>0),"-",IF(AND(A1<0,B1<0),A1/B1,B1/A1))

単純に1.条件の「ORをANDに読み替えた」だけです。
まあ、素直に↓のような書き方もありそうですが・・・。

=IF(OR(A1<=0,B1<=0),IF(AND(A1<0,B1<0),A1/B1,B1/A1),"-")
    • good
    • 0

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