• ベストアンサー

Excelの文字列検索関数について

Excel2007で、あるセルに入っている英単語が、別のセル範囲(複数セル)に入っている英文の中にあるかどうか、を調べたいのですが、関数を使って実現できるでしょうか? たとえば、 A1に"This is a pen." A2に"That is a desk" という英文があり、 B1に"bat", B2に"pen"を入れたとします。 この場合、A1~A2に"bat"は存在しないのでC1には"FALSE"が、 A1~A2に"pen"は存在するのでC2には"TRUE"が自動的に入るようにしたいのです。 (TRUE - FALSE でなくても、数字などでもかまいません) FIND関数は単一セルの中の文字列しか検索できないし、 MATCH関数はセル内容が同一でないと結果が出ないのでそのままでは使えません。 何かいい方法はないでしょうか。

  • mtkame
  • お礼率70% (291/411)

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

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

こんばんは! 一例です。 ↓の画像のC1セルに数式を入れて下へオートフィルでコピーしていますが、 配列数式になってしまいますので、 この画面からコピー&ペーストしただけではエラーになると思います。 C1セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますのでShift+Ctrl+Enterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 C1セルは =IF(A1="","",IF(OR(ISNUMBER(FIND($B$1:$B$2,A1))),TRUE,FALSE)) としてShift+Ctrl+Enterで確定です。 以上、長々と書きましたが参考になれば幸いです。 他に良い方法があれば読み流してくださいね。m(__)m

その他の回答 (5)

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

No.5です! 投稿したあとで勘違いに気づきました。 A列の中にB1・B2に入力した文字列があれば B列の隣のセルにTRUEかFALSEを表示させるわけですね! 前回の数式は逆(A列の各セルにB1・B2セルの文字列があればC列に表示する) になっていました。 C1セルの数式を =IF(B1="","",IF(OR(ISNUMBER(FIND(B1,$A$1:$A$100))),TRUE,FALSE)) (前回同様配列数式になってしまいますので、Shift+Ctrl+Enterで確定です。) として、オートフィルで下へずぃ~~~!っとコピーしてみてください。 これでB列に検索文字列が増えても対応できると思います。 尚、数式は100行まで対応できるようにしていますが、 データ量によってアレンジしてみてください。 どうも長々と、何度も失礼しました。m(__)m

mtkame
質問者

お礼

皆様、 早速のご回答をありがとうございました。 たくさんのヒントを元に、やりたいことができるようになりました。 まとめRESで失礼ですが、皆さんにお礼申し上げます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

例示のように、いくつかのセル範囲(A1:A2)に「英文」が入力されていて、FIND関数でそれらのセルに検索文字列(B1)が含まれているかどうかを調べたいなら、以下のような関数が簡単です。 =ISNUMBER(FIND(B1,PHONETIC(A1:A2)))

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.3

=NOT(ISERROR(FIND(B2,A2,1))) で、どうでしょう >FIND関数は単一セルの中の文字列しか検索できないし これは、勘違いかと...

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

C1へ TRUE - FALSE で表示 =IF(A1="","",IF(COUNTIF($A$1:$A$10,"*"&B1&"*"),TRUE,FALSE)) 無ければ"0"、あるときは含まれるセルの数を表示 =IF(A1="","",(COUNTIF($A$1:$A$10,"*"&B1&"*"))) 以上、参考まで

  • wisemac21
  • ベストアンサー率39% (171/429)
回答No.1

こんなのはどうですか? C1 =IF(ISERROR(SEARCH($B$1:$B$2,A1)),FALSE,TRUE) 下へコピー

関連するQ&A

  • excelで文字列を検索する関数を教えてください。

    いつもお世話になります。 エクセルの関数で、シートAのセルA1に入っている文字列をシートBのC列から探し出し、同じ文字列があればTrueをなければFalseを返す関数を教えてください。 わからないながらも色々調べてみたのですが、検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 よろしくお願いします。

  • エクセルで文字列検索の関数

    エクセルのワークシート関数で質問です。 「A1セルに、文字列、A、B、Cの何れかを含み、かつCDを含まない」ことを調べる関数です。 素直に、 =AND(ISNUMBER(FIND("A",A1)),ISNUMBER(FIND("B",A1)),ISNUMBER(FIND("C",A1)),NOT(ISNUMBER(FIND("CD",A1)))) と長ったらしく書けば取得できることはわかるのですが、もっと簡潔なやり方がありそうな気がします。 どうか教えてください。

  • Excelの文字列結合について教えてください

    Excelの文字列結合について教えてください。 =SUBSTITUTE(TRIM(CONCATENATE(A1," ",B1," ",C1," ",D1))," ","/") 上記の関数を使い、空白のセルがあった場合そのセルを除外して「/」で区切るまではできたのですが、選択セルに英文が入っていると、英文内のスペース部分にまで「/」が挿入されるようになってしまいました。 例えば「A1」のセルに「This is a pen」「B1」のセルに「Boys」と入力されていると、「This/is/a/pen/Boys」と表示されてしまいます。 これを「This is a pen/Boys」という風に結合させるには、どうしたら良いでしょうか。 よろしくお願いします。

  • エクセルの関数でこんなのありますか

    例えばセル「A1」に50と入力されていたとします。セルの「B1」から「B100」まで1から100まで連番で入力されていたとします。 セル「C1」に関数で「A1」に入力していた値が、もし「B1」から「B100」に入力されている値と同じものが存在していた場合、「True」を帰し、存在しなければ「FALSE」を帰します。 表現は特にこだわらず、あるかないか分かればOKです。 いかがでしょうか。

  • エクセルの関数で文字列検索

    エクセルの関数ですが、指定したある特定のセルの中に「任意」または「フリー」という文字列が無かった場合のみ「TRUE」を返してほしいのです。 やってみましたがいまいち自信がもてないので質問しました。 =IF(AND(LEFT(OFFSET(D48,B49,0),2)<>"任意",LEFT(OFFSET(D48,B49,0),3)<>"フリー"),TRUE) と =AND(ISERROR(FIND("フリー",OFFSET(D48,B49,0))),ISERROR(FIND("任意",OFFSET(D48,B49,0)))) はまったく同じ結果となりますか? 異なる結果が返る場合はありませんか? また、両方とも同じ式の繰り返しを使っていますが、もっと簡単に記述できませんでしょうか?

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

    エクセルの検索関数について、以下のことで教えてください。 以下のような甲~丁製品データが並んでいます。B列にはチェックボックスを配置し、例えば「丙社製品」を選ぶ場合にB3にあるチェックボックスにチェックしてA3セルが「TRUE」となるようにセットされています(チェックしたチェックボックスは■で表現しています)。チェックされる(TRUEとなる)製品は一つだけです。 <シート名:製品リスト> A B C 1 FALSE □ 甲社製品 2 FALSE □ 乙社製品 3 TRUE ■ 丙社製品 4 FALSE □ 丁社製品 そこで、『本シート内A1~A4中の「TRUE」に該当する製品名(C列の何れか)を拾って』別シートのあるセルに「○社製品」と掲載したいのです。 IF関数でも可能なのですが、製品が7つ以上の場合には使えません。VLOOKUP関数をやってみましたが、A列の「TRUE」「FALSE」がランダムになる為、「昇順」とならず、エラーが出てしまいます。 単純なことなのかもしれませんが、壁に当たっています。 どなたか分かる方がいましたら教えてください。

  • エクセル関数、文字列の抽出

    A1セルの中にたとえば「コーヒー、お茶、紅茶、コーラ、ビール、ワイン」と有るとします。B1にビールとワイン、C1にコーヒー、紅茶と抽出したいのですが、どなたかご存知の方ぜひ教えてください。MID関数とかFIND関数とかを試したのですがうまくいきませんでした。宜しくお願いします。

  • エクセルの関数

    数種類の関数を組み合わせて作ったのですが、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がひと文字でも含まれている場合』を、『真』とするにはどうすればよいでしょうか? 宜しくお願いいたします。

  • EXCEL 文字の検索 関数

    一つのセル内に、たとえば[1A2A3A1B2B3B]が入力されていて、 このデータから 1Aは1個 1Bは1個 1は2個 Bは3個 といった具合に、指定した文字の個数を関数でかえすことはできますか?個人的にはFINDとかを使えばできるかなと思い挑戦したのですが、うまくいきませんでした。よろしくお願いします。

  • エクセル関数:文字の抜き出し方について

    どなたかお力添えください。 セルA1に「1234:567:89abc:de」があります。ここからセルB1に「1234」だけを、セルC1に「567」だけをセルD1に「89abc」だけをセルE1に「de」だけを抜き出したいと思っています。「FIND」関数では1番左の「:」しかカウントしてくれないため、苦労しています。 やはり「LEFT(FIND)」で左から「1234」を抜き出し、残り「567:89abc:de」を別の列のセル(たとえばセルAA1)に表示し、また「LEFT(FIND)」で左から「567」を抜き出し、・・・を繰り返すしかないでしょうか。 セルC1・D1・E1とも、1式でセルA1から直接抜き出す方法はないでしょうか。 ご存じの方、お力添えください!!

専門家に質問してみよう