EXCEL IF関数 AND、OR条件

このQ&Aのポイント
  • EXCELのIF関数を使用して、AND条件とOR条件を組み合わせる方法について質問しています。
  • 具体的な条件を設定して、特定の値に対して「○」または「×」を返す数式を作成したいと考えています。
  • 回答例の数式を分解して理解しようとしましたが、後半の数式の使い方がわかりにくいです。追加の条件を付加したい場合の方法について教えてください。
回答を見る
  • ベストアンサー

EXCEL IF関数 AND、OR条件

先ほど、以下のような質問をさせて頂き、回答を頂いたものについての、追加の条件を付けた場合についての数式について、ご教授お願いいたします。 ◆以前、質問引用 以下の「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"),"○","×"))) 宜しくお願いいたします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

長い式を使うと、後でメンテナンスする時に何をやろうとしていたのか解らなくなって、大変なんですよね。 一例ですが、作業列を使ってみました。添付の図も見て下さい。 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列を非表示にでもしてください。

kenthehg
質問者

お礼

親身に回答を下さり、ありがとうございます。 非表示のテクニックは最近身に付け、試してみましたが、非常にわかりやすく、まとめることがきました。 みなさんの頭の中が、シンプルで、私も一つずつ冷静に対応できるようになりたいです。 ありがとうございました。

その他の回答 (4)

回答No.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,"")

kenthehg
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 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

kenthehg
質問者

お礼

親身にご回答を頂き、ありがとうございます。 今回、試しているものは、4つの文字列でした。 ですが、今後は応用していくつもりですので、非常に勉強になりました。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>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"),"○","×")))

kenthehg
質問者

お礼

親身にご回答をくださり、ありがとうございます。 正常に値を返すことが出来ました! また、論理式を言い換えて考えることが、勉強になりました。 ありがとうございました。

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

>ここに、追加条件を付加したいのですが、 >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/

kenthehg
質問者

お礼

親身にご回答を下さりありがとうございます。 偽の場合の数式を変更し試みましたが、私の勉強不足もあり、返すことができませんでした。 ただ、IFの応用に関して、とてもシンプルに考えられるようになってきました。 ありがとうございました。

関連するQ&A

  • EXCEL IF関数 AND、OR関数

    数式がわからず、お力添えください。 以下の「D」の「○」「×」を数式で入力するのが目標です。 数式で表すことができますでしょうか? 条件としましては、 B>Cのとき、Aの文字列が「X1またはX2」の場合は、「○」、それ以外は「×」 C>Bのとき、Aの文字列が「Y1またはY2」の場合は、「○」、それ以外は「×」 それ以外のとき、(B=C,どこかが空白のとき)は、空白  A  B  C  D  X1 37 63 ×  X2 78 22 ○  Y1 45 55 ○  Y2 29 71 × ご教授お願いいたします。

  • エクセル【IF関数、OR関数】について

    先ほどの質問(http://okwave.jp/qa/q6870449.html)の続きというか補足です。 具体的には、 ・F列またはG列に、X5またはX6またはX7またはX8またはX9またはX10のいずれかの値が入れば、I列に「A」と表示させる。 ・F列またはG列に、X14またはX15またはX16またはX17またはX18のいずれかの値が入れば、I列に「B」と表示させる。 ・F列またはG列に、X23またはX24またはX25またはX26またはX27またはX28のいずれかの値が入れば、I列に「C」と表示させる。 ということがやりたいです。 X列の値は全て文字列(人名)です。 先ほどいただいた回答の、 =IF(COUNTIF(X5:X10,F3)+COUNTIF(X5:X10,G3),"A",IF(COUNTIF(X14:X18,F3)+COUNTIF(X14:X18,G3),"B",IF(COUNTIF(X23:X28,F3)+COUNTIF(X23:X28,G3),"C",""))) という式を入れてみましたが、F列、G列が空白でも「A」と表示されてしまいました。 教えてgooを利用するのは初めてなので、おかしなことをしていたら申し訳ありません。

  • エクセルのIF関数とVLOOKUP関数について教えてください。

      A B C 1 A1 B1 C1 2 A2 B2 C2 ・ ・ ・ 上記のような表があり、セルX、Yに入力した値が2つの条件に合致した場合、セルZにC列の値を返すような数式を作っています。 たとえば、セルXの値がA1より小さく、かつ、セルYの値がB1より小さい場合にはセルZにC1の値を表示する、という数式を作りたいのです。 (ちなみにAn、Bn、Cnにはそれぞれ数字が入ります) =IF(AND(X<=A1,Y<=B1),C1,IF(AND(X<=A2,Y<=B2),C2,・・・ AND関数を利用してこのように数式を入れると、途中まではうまくいくのですが、引数が多いため途中からエラーが出てしまいます。 (引数の数は10個以上あります) IF関数とVLOOKUPを組み合わせればいいというところまではわかるのですが、どのように条件設定をすればいいのかがわかりません。 エクセル初心者で恐縮ですが、どなたか詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

  • 【エクセル】if関数 or条件に関して

    エクセル初心者です。 A列を検索条件とし B列から検索 一つでも該当がある場合にはCにチェックを入れる (もしくは該当セルの色を変える等) という関数を作りたいと思っています。 IF関数を使って試しに作ってみました。 =IF(OR($A$1=$B$1:$B$26,$A$2=$B$1:$B$26,$A$3=$B$1:$B$26),"○","×") ※結果は画像を参照お願い致します。 A列の(a,f,m)という文字列を条件としてB列を検索し、一つでも該当する場合には C列に○を、該当しない場合は×をつける。 検索条件を(A1,A2,A3)と3つだけの場合はこちらで対応出来るのですが、 本来やりたいものは、 (A列)検索条件が100個以上、 (B列)検索をかける対象も1000個以上といったものをやりたいので (A1,A2,A3・・)を手打ちだとものすごく時間がかかってしまいます。 なので、文字列の条件を簡単に範囲指定(複数指定)出来るような書き方があれば 教えて頂きたいと思い質問をさせて頂きました。 また、以下のIF文を最初に思いついたのですが、 こちらは書き方が間違っているようで、「!」が出てしまいました。 =IF($A$1:$A$3=$B$1:$B$26,"○","×") 自分ではなにがいけないのかがわからなかったので、 出来ればこちらの関数の矛盾点も指摘して頂きたいです。 関数の単語だけでも、なにかヒントを頂きたいと思っています。 よろしくお願いします。

  • IF関数の複数の条件について

    よろしくお願いいたします。    A   B   C 1  ○   ○    あ  2  ○   △    い  3  △   △    う 4  △   ○    え 5  □   △    お A列が○でかつB列が○のみ場合、E列は「あ」、 A列が○でB列が○以外の場合はC列は「い」、 A列が△でかつB列が△のみ場合、E列は「う」、 A列が△でB列が△以外の場合はC列は「え」、 A列が○、△以外の場合はC列は「お」。 というようなIFを使った数式はは可能でしょうか? 質問に矛盾がありましたら申し訳ありません。

  • エクセル【IF関数、OR関数】について

    =IF(OR(F3:G3=X5,F3:G3=X6,F3:G3=X7,F3:G3=X8,F3:G3=X9,F3:G3=X10),"A",IF(OR(F3:G3=X14,F3:G3=X15,F3:G3=X16,F3:G3=X17,F3:G3=X18),"B",IF(OR(F3:G3=X23,F3:G3=X24,F3:G3=X25,F3:G3=X26,F3:G3=X27,F3:G3=X28),"C"))) の式で、どこを直せば正しく返されるのか教えてください。 現在の式では、♯VALUE!になってしまいます。

  • エクセルのIF関数でORとANDの組み合わせ方

    エクセルのIF関数でORとANDの組み合わせ方を教えてください。 =IF(AND(C1>10,A1>B1),"S","") =IF(AND(C1>10,A1<B1),"L","") この2つの式をORで1つの式にするにはどのように組み合わせれば良いのでしょうか? よろしくお願いいたします。

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • Excelに関する質問(IF関数のOR連結)

    ExcelでIF関数を3条件以上つなげる場合、どうすればよいですか。 例えば、A1のセルに「A」と入ったらB1のセルには「あ」、同じく「B」と入ったらB1のセルには「い」、同様に「C」と入ったらB1のセルには「う」…のように、A1の入力値(文字列)に対応して、B1の値(文字列)を変化させていくというものです。 05年10月にほぼ同じ質問が出され既に解決済みになっていますが、それを参考に条件を増やしたところ、書式が違っているせいか数式の入力を受け付けません。 <2条件までは成功>※「B1」セルに与えた式 =IF(A1="A","あ",IF(A1="B","い")) <3条件以上は失敗>※「B1」セルに与えた式 =IF(A1="A","あ",IF(A1="B","い"),IF(A1="C","う"),IF(A1=…)) 恐らく初歩的な書式ミスだと思いますが、初心者ゆえ分かりません。 ちなみに今のところ条件は5つです。 ご指導のほど宜しくお願い致します。

  • 複数条件の関数を教えてください。

    表)  A B C 1 2 各セルには下記の情報しか入りません。 A1:空白、-、その他の値 B1:空白、-、その他の値 C1:プルダウンで(1)~(5)までのいずれかの値 ※その他の値には、「空白」、「-」、以外で「様々な文字列」が入ります。(ランダム) この場合で、A2のセルに下記の計算式を入れたいです。 A1、B1のいずれかにその他の値が入り、かつC1で(2)が選ばれていた場合には1を立てたい。 A1、B1が空白と-しかない場合には、空白にしたい。 A1、B1のいずれかにその他の値が入っても、C1が(2)ではない場合は空白にしたい。 この場合どのように設定すればいいのでしょうか。 当初は、A1、B1に入るのは「-、その他の値」のみで空白がなかったため下記の設定を していましたが、空白条件が増えたため設定方法がわかりません。 A2=if(OR(A<>"-",B<>"-"),IF(C1="(2)",1,""),"") よろしくお願いします。

専門家に質問してみよう