• 締切済み

エクセルの関数

数種類の関数を組み合わせて作ったのですが、ANDでもORでも答えが同じになってしまいます。 どこに間違いがあるのか、教えて頂けると助かります。 =IF(ISERROR(AND(FIND("A",A5,1),FIND("B",A5,1)=FALSE)),"偽","真") =IF(ISERROR(OR(FIND("A",A5,1),FIND("B",A5,1)=FALSE)),"偽","真") 上記式はAND・OR以外はすべて同じのつもりです。 AND関数の場合の答えは、期待通りです。 OR関数の答えとして、A5のセルに『A又Bが含まれている』にも拘わらず、『偽』と表示されます。 (ORのそれ以外の答えは期待通りです。) OR関数で、『A5のセルに、A又はBがひと文字でも含まれている場合』を、『真』とするにはどうすればよいでしょうか? 宜しくお願いいたします。

  • ym518
  • お礼率93% (14/15)

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

掲示された関数があんまりひどかったのでそっちの説明にチカラが入ってしまい,何がしたいのかもちゃんとご相談に書いてあったのを見落としていました。失礼しました。 #しかし,結局はゴタクはいいから答えだけちょーだいなので,回答した甲斐もありません。まぁ大概はそんなモノですが。 それはさておき。 元のご質問: >OR関数で、『A5のセルに、A又はBがひと文字でも含まれている場合』を、『真』とするにはどうすればよいでしょうか? 添付図上: =IF(AND(ISERROR(FIND("A",A5)),ISEROR(FIND("B",A5))),"偽","真") ん? これは先に回答した式じゃないですか。   と思ったら「OR関数で」ってのが重要だと思ってるって事ですか。 【次のステップ】 ISERROR関数は,ここでは「Aが(Bが)『無い』」時にTRUEになる関数です。 従って「ある」ときはFALSEになるので =IF(OR(ISERROR(FIND("A",A5))=FALSE,ISEROR(FIND("B",A5))=FALSE),"真","偽") のように組み立てることが出来ます。 #更に応用 「無くない(=ある)」時にTRUEとなるよう関数を組み合わせることもできます =IF(OR(NOT(ISERROR(FIND("A",A5))),NOT(ISERROR(FIND("B",A5)))),"真","偽") ここまで来るとだいぶアタマがひっくり返ります。 #別の応用 最初から「ある」ときにTRUEになる計算式(論理式)を使う手もあります 例: =COUNTIF(A5,"*A*")>0 新しいご質問:添付図下 >AND関数で『A5セルにA、B両方が含まれている場合のみ真、片方のみ又は含まれていない場合は偽』 「ある」のANDなので =IF(AND(ISERROR()=FALSE,ISERROR()=FALSE),"真","偽") または =IF(AND(NOT(ISERROR()),NOT(ISERROR())),"真","偽") ですね。 追加ご質問の後半は,元のご質問と同じ条件です。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

かなり色々デタラメです。 【基本の理解1】 まずAND関数やOR関数を使うときは, AND(論理式,論理式) OR(論理式,論理式) のようにします。 【基本の理解2】 ここで言う論理式とは パターンA)  A1>B1  とか  A1="○"  のような,等しいとか大きい小さいで2つの何かを比較した式のこと パターンB)  ISERROR(FIND("A",A5))  のような,関数自体がTRUE若しくはFALSEの結果を計算する関数のこと  勿論これを  ISERROR(FIND("A",A5))=TRUE  のように,パターンAの格好にして使っても構いません。 です。 ここまでのまとめ: OR(A1,B1=5) と書いてA1かB1が5なら成立,なんて数式の書き方はありませんということです。 この場合なら OR(A1=5,B1=5) という具合に,それぞれの判定をする論理式をしっかり書いて並べます。 応用: あとは答えを書いておきますから,しっかり理解してください。 =IF(AND(ISERROR(FIND("A",A5)), ISERROR(FIND("B",A5))),"偽","真") =IF(OR(ISERROR(FIND("A",A5)), ISERROR(FIND("B",A5))),"偽","真") いきなり関数に取り組む前に,言葉で(箇条書きで)  何が何である または 何が何である ならこうである みたいに,やりたいことを整理してみると間違えずに数式を検討できます 鉛筆と紙で添付図のように場合分けを漏れなく整理し,何がどうだったらどうなって欲しいのかよく研究してから,数式を検討してみるのも良い方法です。

ym518
質問者

お礼

早速ご回答を頂き有難うございます。 頂いた解答をコピーしてエクセルの数式に張り付けましたが、結果は以下の通りとなりました。 A5セル  AND関数結果      OR関数結果 AB      真(期待通りの答え) 真(期待通り) A      真(期待と反対)    偽(期待と反対) BC      真(期待と反対)   偽(期待と反対) CC      偽(期待通り)    偽(期待通り) ご指摘の通りの素人で申し訳ありませんが、 AND関数で『A5セルにA、B両方が含まれている場合のみ真、片方のみ又は含まれていない場合は偽』 OR関数で『A5セルにA又はBの片方でも含まれている場合は真、全く含まれていない場合は偽』 とする式をご教示いただければ幸甚です。 お手数をお掛けします。

関連するQ&A

  • エクセル関数で困っています

    特定セルの数字を特定文字に変換したいのですが、希望表示にさせることが出来ません 現在は下記変更       希望    123⇒あかさ       123⇒あかさ    321⇒あかさ       321⇒さかあ    223⇒かさ         223⇒かかさ   希望通りに表示できる関数を教えてください よろしくお願いいたします。 現在の関数は下記を使用中  =IF(ISERROR(SEARCH("1",A20))=FALSE,"あ","")&IF(ISERROR(SEARCH("2",A20))=FALSE,"か","")&IF(ISERROR(SEARCH("3",A20))=FALSE,"さ","") 

  • エクセル関数 ISNUMBERについて

    こんにちは。 ISNUMBER と IF関数を用いてセルに"真"か "偽"を表示させたいのですが・・・ 例えば、セルに特定の数値が入力されれば“真”を表示する。ということです。 どうやら、数字の「1」は「10」「12」なども 「1」が含まれていると認識するようで、困っています。 また、他のセルの関数を参照していることからどのような式を組めばよいのか分かりません。 詳しく説明すると以下のようになります。 (( ))はセルに入力されている関数です。        A         B         C 1    2009/01/20   2      1    (( =MONTH(A1) )) 3     4、10月    (( 文字列  )) 4     真    (( = IF(ISNUMBER(SEARCH(A1,A3)),"真", "偽") )) A1 シリアル値で入力された日付 A2 その日付より“月”だけ取り出して表示 A3 真か偽かを判断する為の基本となるデータを入力 A4  ISNUMBER関数 → A2の数値がA3に含まれていれば“真”をそうでないらな“偽”を表示する。 上記のように 1 は 10月 とは異なるので“偽”としたいのですが、10月の 10 の 1 を読み取ってしまうようで “真”と なってしまいます。 11月、12月 等も 1、2、と 読み取ってしまうようで・・・・ 1は 1月のみ“真”と表示。 2は2月のみ“真”と表示。というようにするにはどうしたら良いのでしょうか? 宜しくお願いします。

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • Excel 住所分け市区郡

    ここで教えて頂いた式なのですが セルB1に =IF(MID(A1,4,1)="県",LEFT(A1,4),LEFT(A1,3)) セルE1に =MID(A1,LEN(B1)+1,150) セルC1に =IF(ISERROR(FIND("大和郡山市",E1))=FALSE,"大和郡山市",IF(ISERROR(FIND("四日市市",E1))=FALSE,"四日市市",IF(ISERROR(FIND("廿日市市",E1))=FALSE,"廿日市市",IF(ISERROR(FIND("郡山市",E1))=FALSE,"郡山市",IF(ISERROR(FIND("市原市",E1))=FALSE,"市原市",IF(ISERROR(FIND("郡上市",E1))=FALSE,"郡上市",IF(ISERROR(FIND("蒲郡市",E1))=FALSE,"蒲郡市",IF(ISERROR(FIND("小郡市",E1))=FALSE,"小郡市",IF(ISERROR(FIND("市川市",E1))=FALSE,"市川市",IF(ISERROR(FIND("郡",E1))=FALSE,LEFT(E1,FIND("郡",E1)),IF(ISERROR(FIND("市",E1))=FALSE,LEFT(E1,FIND("市",E1)),IF(ISERROR(FIND("区",E1))=FALSE,LEFT(E1,FIND("区",E1)),IF(ISERROR(FIND("町",E1))=FALSE,LEFT(E1,FIND("町",E1)),IF(ISERROR(FIND("村",E1))=FALSE,LEFT(E1,FIND("村",E1)),"")))))))))))))) セルD1に =SUBSTITUTE(SUBSTITUTE(A1,B1,"",1),C1,"",1) 大阪府大阪市西淀川区福町3丁目1-50→大阪府 大阪市 西淀川区福町3丁目1-50 兵庫県神戸市兵庫区芦原通1丁目2番26号→兵庫県 神戸市 兵庫区芦原通1丁目2番26号 となります。これを 大阪府大阪市西淀川区福町3丁目1-50→大阪府 大阪市西淀川区 福町3丁目1-50 兵庫県神戸市兵庫区芦原通1丁目2番26号→兵庫県 神戸市兵庫区 芦原通1丁目2番26号 と市と区は同じセルに分けたいです。郡も同じで市と同じセルに分けたいです。 分ける区分は都道府県  市区郡  町名・番地と三つに分けます。

  • エクセル オートシェイプ

    こんにちは。 自分なりに調べてみたのですが、わからなかったので教えてください。 A1セルにIF関数(因みに、=IF(AND(B1="商品",B2="新"),B3,"")で、B3セルには数字が入ります。)を入れ、 挿入した図形に=A1とすると、真の場合は指定した数字(B3と同じ)が入るのですが、 偽の場合は、空白ではな「0」が表示されてしまいます。 偽の場合に「0」ではなく、空白にするにはどのようにすれば良いのでしょうか。 よろしくお願いいたします。

  • Excelの関数の意味を教えてください。

    Excel関数初心者です。 以下のふたつの関数の式の意味を教えてください。 どの値を見に行って、それに対してどのような処理を行なっているのかを、できるだけ、わかりやすく教えてください。 (1)=IF(ISERROR(VLOOKUP(A2,B$1:C1,2,0)),"",VLOOKUP(A2,B$1:C1,2,0))&B2 (2)=SUMPRODUCT(1*NOT(ISERROR(FIND(B2,$C$1:$C$15))),$D$1:$D$15)

  • エクセルの関数について、変ですか?

    以下の関数をセルに入力したのですが、 エラーというか「入力した数式は正しくありません」とメッセージが出てきます。 どこか変なところありますか? さっぱり分かりません。 =IF(A1=\"\",\"\",IF(NOT(ISERROR(SEARCH(\"a10\",A1,1))),\"####\",IF(NOT(ISERROR(SEARCH(\"b10\",A1,1))),\"$$$$\",IF(NOT(ISERROR(SEARCH(\"c10\",A1,1))),\"%%%%\",IF(NOT(ISERROR(SEARCH(\"d10\",A1,1))),\"$$$$\",IF(NOT(ISERROR(SEARCH(\"e10\",A1,1))),\"$$$$\",\"何それ?\")))))))

  • エクセルの関数について、変ですか?

    以下の関数をセルに入力したのですが、 エラーというか「入力した数式は正しくありません」とメッセージが出てきます。 どこか変なところありますか? さっぱり分かりません。 =IF(A1="","",IF(NOT(ISERROR(SEARCH("a10",A1,1))),"####",IF(NOT(ISERROR(SEARCH("b10",A1,1))),"$$$$",IF(NOT(ISERROR(SEARCH("c10",A1,1))),"%%%%",IF(NOT(ISERROR(SEARCH("d10",A1,1))),"$$$$",IF(NOT(ISERROR(SEARCH("e10",A1,1))),"$$$$","何それ?")))))))

  • ISERROR関数を使用してもエラーが出る

    Excel2016でセルにUSDまたは、JPYの文字がある場合はエラーが出ないのですが、それ以外の文字の場合ISERROR関数を使用しても#VALUE!というエラーが出ます。 関数は以下の通りです。 =IF(OR(NOT(ISNUMBER($G5)),NOT(ISNUMBER($K5))),"",IF($B$5<ROUNDDOWN($I5*IF(NOT(ISERROR(SEARCH("JPY",$D5,1))),100,VLOOKUP(CONCATENATE(MID($D5,IF(OR(SEARCH("USD",$D5,1)=4,ISERROR(SEARCH("USD",$D5,1))),1,4),3),"JPY"),$A$12:$B$18,2,FALSE))*$G5*$B$8/IF($B$8=100000,10000,IF($B$8=10000,1000,IF($B$8=1000,100,))),0),"超過",ROUNDDOWN(IF(ISNUMBER($P5),-$P5,-$I5)*IF(NOT(ISERROR(SEARCH("JPY",$D5,1))),100,VLOOKUP(CONCATENATE(MID($D5,IF(OR(SEARCH("USD",$D5,1)=4,ISERROR(SEARCH("USD",$D5,1))),1,4),3),"JPY"),$A$12:$B$18,2,FALSE))*$G5*$B$8/IF($B$8=100000,10000,IF($B$8=10000,1000,IF($B$8=1000,100,))),0))) エラーが出ているのは以下の「【】」の部分のようです。 =IF(OR(NOT(ISNUMBER($G5)),NOT(ISNUMBER($K5))),"",IF($B$5<ROUNDDOWN($I5*IF(【NOT(ISERROR(SEARCH("JPY",$D5,1)))】~ 数値を表示したいのですが解決方法を教えてください。 回答よろしくお願いします。

  • エクセルの関数について

    IF関数で"指定したひとつ"のセルの"数値"に対して真偽を返しているようなイメージで、"指定した範囲"のセルの"文字"に対して真偽を返せるような関数はありませんか? また、複合関数でもいいのでご存知でしたら是非ご教授願います。 やりたいことは次のようなことです。 ・A1~A100までのセルの中の文字を比較する。 ・真であればOK、偽であればNGといった感じです。 宜しくお願いいたします。

専門家に質問してみよう