• ベストアンサー

助けて下さい。IF関数でSEARCH関数を使いとVALUE!を消す方法。

エクセル初心者の自分が、ネットや本を読んで、 式を作ったのですが、どうしてもVALUE!が出て困っています。 色々、調べてみたんですが、うまくいかないので、どうか お助け下さい。 エクセルのA2セルの中の特定の文字列を検索したくて SERCH関数とIF関数を組み合わせて以下の 式を作ったのですが、VALUE!と出てしまいます。 =IF(SEARCH("株式会社",A2),"1","0") どこが、問題なんでしょう? SERCHの結果はなければVALUE!がでるのでそれを偽と考え、 その場合は0が出るようにしたいのですが・・・。 どうか、お願いします、助けて下さい。

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

  • ベストアンサー
回答No.1

内容を判定したい場合はIS関数を使います。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/if_is.htm#is =IF(ISERROR(SEARCH("株式会社",A2)),0,1) ちなみに、特に理由がなければ「”1”」「”0”」などと文字として入力するよりも数値としておいた方が後々いいことが多いです。

jojo1742
質問者

お礼

お返事、遅くなりまして、すみません。 有難うございます。 関数の知識の絶対数が少ないことを 痛感しました。 勉強になりました。 有難うございます。 早速試してみます。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

見つからないときは、SEARCH関数はエラー(値)を返すのだから、 エラーかどうかを聞く関数ISERROR関数を思い出さないとだめ。知らなかったのだろうが。 例データ A列   B列 exelappiication 見つかった exelapplication 見つからない B2の式 =IF(ISERROR(SEARCH("exe",A2)),"見つからない","見つかった") B3の式 =IF(ISERROR(SEARCH("exc",A3)),"見つからない","見つかった") 見つかったとき何文字目かの数を出すなら 例 gexelapplication 2 B4の式は =IF(ISERROR(SEARCH("exe",A4)),"見つからない",SEARCH("exe",A4))

jojo1742
質問者

お礼

お返事、遅くなりまして、すみません。 有難うございます。 勉強になります。 早速試してみます。

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

こんばんは! すでに色々回答が出ていますので 参考程度で・・・ =IF(ISNUMBER(FIND("株式会社",A2)),1,0) でもOKかと思います。 尚、エラー処理はしていません。 どうも失礼しました。m(__)m

jojo1742
質問者

お礼

お返事遅くなりまして、すみません。 有難うございます。 その方法もあるんですね。 考え方が、固まってました。 有難うございます。

  • yone_sk
  • ベストアンサー率34% (58/167)
回答No.5

皆さんのやり方で大体良いと思いますが (1)"株式会社"が固定なら   =IF(COUNTIF(A2, "*株式会社*"), "1", "0") (2)"株式会社"を動的にするなら   =IF(COUNTIF(A2, "*" & $B1 & "*"), "1", "0") (3)"1"、"0"が数値型でいいなら   =COUNTIF(A2, "*株式会社*")   ※セルの書式設定で文字列にすれば文字になりますが・・・ (4)天邪鬼な考え方   =IF(LEN(A2)=LEN(SUBSTITUTE(A2,"株式会社","")),"0","1")

jojo1742
質問者

お礼

お返事遅くなりまして、すみません。 有難うございます。 色々な方法を提案して頂きまして、 感謝です。 勉強になりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

IF関数は理論式がTRUEのときには、また、FALSEのときには、ということで、理論式がエラーの場合にはFALSEのときの値とはならずにエラーが表示されます。 したがって、それを避けるためには次のような方法が取られますね。 一つは =IF(A2="","",IF(ISERROR(SEARCH("株式会社",A2)),0,1)) 一つは =IF(A2="","",IF(COUNTIF(A2,"*株式会社*")=0,0,1))

jojo1742
質問者

お礼

お返事遅くなりまして、すみません。 IF関数の根本が理解できていない見いでした。 有難うございます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >=IF(SEARCH("株式会社",A2),"1","0") SEARCH は、文字列の位置を探すものです。 あえて使うなら、このようになります。 =ISNUMBER(SEARCH("株式会社",A2))*1 文字列があるなしを調べるなら、COUNTIF 関数が使えます。 =(COUNTIF(A2,"*株式会社*")>0)*1

jojo1742
質問者

お礼

お返事、遅くなりまして、 すみませんでした。 そもそもの発想が間違っていたんですね。 有難うございます。 助かりました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

ひょっとしたら、やりたいことは =COUNTIF(A2,"*" &"株式会社"&"*") ですみそうな気がしました。

jojo1742
質問者

お礼

お返事、遅くなりまして、すみません。 有難うございます。 まだ、関数の知識が乏しいこと 痛感いたしました。 勉強になります。

関連するQ&A

  • SEARCH()の戻り値#VALUEをIF()できますか(Excel)

    Excel計算式 =IF(0<SEARCH("あ",A1),"有り","無し") セルA1="あり" →"有り"と出ますが、 セルA1="なし"(「あ」が含まれない時)の場合、#VALUEとなってしまいます。 セルの値に、文字列「あ」が含まれるか否かによって、処理を分けるにはどうすれば良いのでしょうか?

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

    エクセルIF関数について A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。 という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。 IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか? どなたか教えてください。

  • エクセルの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!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • IF関数に関して教えてください。

    はじめまして IF関数に関しまして、論理式の箇所に文字が入っているかどうかで 真であるか偽であるか求める場合どのようにしたい良いのでしょうか。 たとえば、、、 論理式= A1に文字が入っている 真の場合=A1 偽の場合=”” 作業したい内容としましては、  A1に文字が入っている → A1の文字をB1に反映させる A1に文字が入っていない→ B1は空欄にする。 また、何か他に適切な関数がございましたら 教えていただければ幸いです。 よろしくお願いいたします。

  • エクセル関数 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月のみ“真”と表示。というようにするにはどうしたら良いのでしょうか? 宜しくお願いします。

  • if関数がわかりません。

    if関数がわかりません。 エクセルを少しかじっただけの初心者です。 上司に言われて表をつくっているのですが行き詰まって質問させていただきました。 もし○○○○なら △という値をかえす そうでないなら□という値をかえす となるのがif関数だと思うのですが 返すのが値ではなくもし○○○○なら入力されているフォントが赤くなる そうでないならフォントが黒くなるという設定は可能ですか? もし可能なら引数の設定でどうなりますか?  論理式   A1=○○○○(もしA1のセルが=○○○○なら)  真の場合       (フォントを赤の色にする) 偽の場合       (フォントを黒の色にする) よろしく「お願いいたします。

  • Excel 関数ifについて

    Excel 関数ifについて セルa1から a100の中に、たとえば 好き ということばがあるかどうかをチェックするとき、 if(countif(a1:a100,"*好き*"),1,0) と指示されました。 本来ならcountifが1より大きければ1を返すのですから、 if(countif(a1:a100,"*好き*")>0,1,0)ですよね? 論理式の >0って 省略できるんですか? 正なら真、0以下なら偽と解釈されるんでしょうか?

  • IF関数の条件に関数を指定

    Excelに関する質問です。 ちょっと分かりづらいのですが、例えばセルA1とB1があるとします。 A1には別シートのセルが参照されています。(「="あ!A1"」など) ここで、B1にはIF関数を入れたいのですが、その時A1の関数式内の文字を条件にしたいのですが、そういうことはできますか? つまり、B1にIF関数で「A1セル内の関数式内に"あ"の文字がある時に"い"と表示する」のようにしたいのです。 普通に「=IF(A1="あ","◯","")」ではできません。 Google先生でも調べてみたのですが、分かりませんでした。 お知恵をいただければ幸いです。

  • FIND関数の値が#VALUE!の場合の非表示

    エクセルで、セルの値に「virus」の文字列がある場合、「virus」と書く関数をFINDとMID関数で作ってみました。 =MID(C3,FIND("virus",C3),FIND("virus",C3)+4) この式だけだと、FINDの結果が無いときに、「#VALUE!」の文字が出てきます。この「#VALUE!」の文字を非表示にしたいと思い、IF文や条件付書式を試すのですが、「#VALUE!」は、長さ0の文字列””でもNULLでもないため、数式になりません。 良い方法をご存知の方教えてください。 よろしくお願いします。

  • エクセルのIF関数で、文字が入力されていたならば~

    エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。 =IF(A1="『どんな文字でも』","",+B1-C1) A1セルに『どんな文字でも』入っていたならば、空白に。 文字が入っていなければB1セルからC1セルを引く、という状態です。 この『どんな文字でも』の部分に何を入れればいいのか教えてください。 またIF関数以外でも同様のことができれば構いません。 宜しくお願いします。

専門家に質問してみよう