- ベストアンサー
EXCEL IF関数 AND、OR条件
- EXCELのIF関数を使用して、AND条件とOR条件を組み合わせる方法について質問しています。
- 具体的な条件を設定して、特定の値に対して「○」または「×」を返す数式を作成したいと考えています。
- 回答例の数式を分解して理解しようとしましたが、後半の数式の使い方がわかりにくいです。追加の条件を付加したい場合の方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
長い式を使うと、後でメンテナンスする時に何をやろうとしていたのか解らなくなって、大変なんですよね。 一例ですが、作業列を使ってみました。添付の図も見て下さい。 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列を非表示にでもしてください。
その他の回答 (4)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
判定するための条件がたくさんあるときは、それらを 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,"")
お礼
親身にご回答を下さり、ありがとうございます。 一つずつデータを導き出す重要性を改めて実感します。 新たなデータ応用の判断材料が見やすく、B-Cのデータをさらに使ってみたくなりました。 ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 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
お礼
親身にご回答を頂き、ありがとうございます。 今回、試しているものは、4つの文字列でした。 ですが、今後は応用していくつもりですので、非常に勉強になりました。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
>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"),"○","×")))
お礼
親身にご回答をくださり、ありがとうございます。 正常に値を返すことが出来ました! また、論理式を言い換えて考えることが、勉強になりました。 ありがとうございました。
- shintaro-2
- ベストアンサー率36% (2266/6245)
>ここに、追加条件を付加したいのですが、 >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/
お礼
親身にご回答を下さりありがとうございます。 偽の場合の数式を変更し試みましたが、私の勉強不足もあり、返すことができませんでした。 ただ、IFの応用に関して、とてもシンプルに考えられるようになってきました。 ありがとうございました。
お礼
親身に回答を下さり、ありがとうございます。 非表示のテクニックは最近身に付け、試してみましたが、非常にわかりやすく、まとめることがきました。 みなさんの頭の中が、シンプルで、私も一つずつ冷静に対応できるようになりたいです。 ありがとうございました。