アプリ版:「スタンプのみでお礼する」機能のリリースについて

先ほど、以下のような質問をさせて頂き、回答を頂いたものについての、追加の条件を付けた場合についての数式について、ご教授お願いいたします。

◆以前、質問引用
以下の「D」の「○」「×」を数式で入力するのが目標です。
数式で表すことができますでしょうか?

条件としましては、
B>Cのとき、Aの文字列が「X1またはX2」の場合は、「○」、それ以外は「×」
C>Bのとき、Aの文字列が「Y1またはY2」の場合は、「○」、それ以外は「×」
それ以外のとき、(B=C,どこかが空白のとき)は、空白

  A  B  C  D
1 X1 37 63 ×
2 X2 78 22 ○
3 Y1 45 55 ○
4 Y2 29 71 ×

◆回答 成功しました。
=IF(OR(COUNTA(A1:C1)<3,B1=C1),"",IF(B1>C1,IF(OR(A1="X1",A1="X2"),"○","×"),IF(OR(A1="Y1",A1="Y2"),"○","×")))

◆引用終了

ここに、追加条件を付加したいのですが、

BとCどちらか大きい数字が、なおかつ80以上のもの。ただし100は除く
それ以外は空白(100の場合も空白)

という条件を付加して、80以上99以下の「○」と「×」をE列(NEW)に返したいと考えています。

回答を頂いた数式を一つずつ分解して理解しようとしましたが、どこにいれていいやら、後半の数式の使い方がいまいち理解できません。

分解(参考)

論理式 IF(OR(COUNTA(A1:C1)<3,B1=C1),
真の場合"",
偽の場合 IF(B1>C1,IF(OR(A1="X1",A1="X2"),"○","×"),IF(OR(A1="Y1",A1="Y2"),"○","×")))

宜しくお願いいたします。

A 回答 (5件)

判定するための条件がたくさんあるときは、それらを 1 本の数式にまとめて判定の結果のみを表示しようとはせずに、各条件への該当の有無をも載せた一覧表を作成するようにしてください。

添付図はその例です。

E2 =0+(counta(b2:d2)=3)
F2 =c2-d2
G2 =countif(b2,"X*")
H2 =countif(b2,"Y*")
I2 =if(e2*f2,choose((sign(f2)*(g2-h2)+3)/2,"×","○"),"")
J2 =(80<=max(c2:d2))*(max(c2:d2)<100)
K2 =if(j2,i2,"")
「EXCEL IF関数 AND、OR条件」の回答画像5
    • good
    • 0
この回答へのお礼

親身にご回答を下さり、ありがとうございます。

一つずつデータを導き出す重要性を改めて実感します。
新たなデータ応用の判断材料が見やすく、B-Cのデータをさらに使ってみたくなりました。

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

お礼日時:2014/05/23 10:30

こんばんは!


A列にはX1・X2・Y1・Y2だけですかね?
一気にやることも可能ですが、
↓の画像のように作業列を使った方法です。
作業列G2セルに
=IF(B2<>C2,IF(AND(MAX(B2:C2)>=80,MAX(B2:C2)<100),1,""),"")
という数式を入れフィルハンドルでずぃ~~~!っと下へコピーしておきます。
これで「1」が標示されているものの判断だけで結果が表示できます。

結果のE2セルに
=IF(G2="","",IF(B2>C2,IF(COUNTIF(A2,"X?"),"○","×"),IF(COUNTIF(A2,"Y?"),"○","×")))
という数式を入れフィルハンドルで下へコピー!

これで画像のような感じになります。m(_ _)m
「EXCEL IF関数 AND、OR条件」の回答画像4
    • good
    • 0
この回答へのお礼

親身にご回答を頂き、ありがとうございます。

今回、試しているものは、4つの文字列でした。
ですが、今後は応用していくつもりですので、非常に勉強になりました。

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

お礼日時:2014/05/23 10:23

長い式を使うと、後でメンテナンスする時に何をやろうとしていたのか解らなくなって、大変なんですよね。


一例ですが、作業列を使ってみました。添付の図も見て下さい。

E3: =IF(SUM(F3:H3)>0,"",IF(SUM(I3:J3)=2,"○","×"))
F3: =(COUNTA(A3:C3)<3)*1
G3: =(B3=C3)*1
H3: =(MAX(B3:C3)=100)*1
I3: =(80<=MAX(B3:C3))*(MAX(B3:C3)<100)
J3: =IF(B3>C3,OR(A3="X1",A3="X2"),OR(A3="Y1",A3="Y2"))*1

E3:J3を下方向にコピーしてF:J列を非表示にでもしてください。
「EXCEL IF関数 AND、OR条件」の回答画像3
    • good
    • 0
この回答へのお礼

親身に回答を下さり、ありがとうございます。

非表示のテクニックは最近身に付け、試してみましたが、非常にわかりやすく、まとめることがきました。

みなさんの頭の中が、シンプルで、私も一つずつ冷静に対応できるようになりたいです。

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

お礼日時:2014/05/23 10:21

>BとCどちらか大きい数字が、なおかつ80以上のもの。

ただし100は除く
MAX(B1:C1)<80 でB:Cの大きい数値が80未満
MAX(B1:C1)>99 でB:Cの大きい数値が100以上
を追加して空白にすればいいので

=IF(OR(COUNTA(A1:C1)<3,MAX(B1:C1)<80,MAX(B1:C1)>99,B1=C1),"",IF(B1>C1,IF(OR(A1="X1",A1="X2"),"○","×"),IF(OR(A1="Y1",A1="Y2"),"○","×")))
    • good
    • 0
この回答へのお礼

親身にご回答をくださり、ありがとうございます。


正常に値を返すことが出来ました!

また、論理式を言い換えて考えることが、勉強になりました。

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

お礼日時:2014/05/23 10:17

>ここに、追加条件を付加したいのですが、


>BとCどちらか大きい数字が、なおかつ80以上のもの。ただし100は除く
>それ以外は空白(100の場合も空白)

条件が複数ある場合は、
一番優先される条件が、一番最初のif文
後はそのif文の真偽のどちらかに、優先順位に従って入れて行きます。

B>C,B<Cの判定の前に、80-99の判定をした方がよさそうですので

>偽の場合 IF(B1>C1,IF(OR(A1="X1",A1="X2"),"○","×"),IF(OR(A1="Y1",A1="Y2"),"○","×")))

の外側に新しいif文を入れます。

if(or (and(B>=79,B<100),and(C>=79,C<100), IF(B1>C1,IF(OR(A1="X1",A1="X2"),"○","×"),IF(OR(A1="Y1",A1="Y2"),"○","×")),"×"))

で良いのでは?

それとも関係なく、単に80-99を判定したいということ?

エクセルの関数自体を勉強してください。
http://pc.nikkeibp.co.jp/pc21/tech/excel36/
    • good
    • 0
この回答へのお礼

親身にご回答を下さりありがとうございます。

偽の場合の数式を変更し試みましたが、私の勉強不足もあり、返すことができませんでした。

ただ、IFの応用に関して、とてもシンプルに考えられるようになってきました。

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

お礼日時:2014/05/23 10:15

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