• ベストアンサー

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

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

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

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

COUNTIF関数ではだめだったのでしょうか。 シートAのB1に =COUNTIF(シートB!C:C,A1) と入れると、 同じ文字列があれば、その個数、なければ0です。 参考までに、VLOOKUP関数で昇順に並んでいないデータの場合 =VLOOKUP(A1,シートB!C:D,2,FALSE) と最後に 検索の型でFALSEをしてみてください。 完全条件一致で使えます。

Goofy_2003
質問者

お礼

とっても素早いお答えをありがとうございます。 教えていただいたCOUNTIFにIFをくっつけて、思い通りにできました。 =IF(COUNTIF(シートB!C:C,A1)=0,"false","true") 5時間も一人で悩んでいたのが嘘のようです。 VLOOKUPもなぜそうなるのかはわからないけど、できました。 一致する文字列がないと、#N/Aとなるので、あるかないかがわかります。 他のことにも使えそうです。 またよろしくお願いいたします。

その他の回答 (4)

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

>検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 間違いだと思いますよ。 VLOOKUP関数は2種あり、FALSE型は検索表のデータが昇順とかに並んでいる必要はありません。その知識の出所はどこですか。 MATCH関数も同じように使えます。 ーー VLOOKUPを使うという路線でやってみると、 =IF(ISERROR(VLOOKUP(A1,Sheet2!$A$1:$A$100,1,FALSE)),FALSE,TRUE) 例データ Sheet2のA1;A5に ss aas dfg awer ssg Sheet1のA1に aas と入れると TRUE xxy などSheet2に無い文字列を入れるとFALSEになります。 >(標題)文字列を検索する関数 ではFIND関数などを連想します。 指定列のセル範囲内で、同じ文字列のセルを検索する・・が適当と思う。

Goofy_2003
質問者

補足

知識の出所は、Excelのヘルプだったのですが、よく読みなおしてみたら「検索の型にTRUEを指定した場合」という所をちゃんと読んでいませんでした。 VLOOKUPでもできました。ISERRORを使うと無い時に#N/AじゃなくてFALSEが出るのですね。勉強になりました。 ありがとうございます。 ちなみにMATCHもやってみましたが、最後に付ける-1,0,1の照合の型って何ですか? ヘルプ読んだけど、検査値以下の最大の値とか意味がわかりませんでした。 またなんで同じことができる関数がいくつもあるのですか?

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

>教えていただいたCOUNTIFにIFをくっつけて、思い通りにできました。 >=IF(COUNTIF(シートB!C:C,A1)=0,"false","true") TRUE,FALSEの結果が必要なら IF文なくでも =COUNTIF(シートB!C:C,A1)=0 とか =COUNTIF(シートB!C:C,A1)>0 とかでも

Goofy_2003
質問者

お礼

ホントですね! ついつい余計な物をくっつけてしまう、悪い癖です。 ありがとうございました。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.3

No.2 diashunです。 InStr関数も使えます。InStr関数は,検索対象として設定した文字列の中に,検索条件とした文字列が含まれているかどうかを調べるときに使用します。 参考:http://www.geocities.jp/cbc_vbnet/function/mojireyu_function.html#instr

Goofy_2003
質問者

補足

ごめんなさい。 全くわからないです。 これらは、セルに直接「=~」の形で書くのではないですよね? ツールのマクロの中にあるエディターとか使って書くものなのではないですか? 私には、メニューの挿入→関数で入れるのしかわからないです。 (それすらもあやしい・・・・)

  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

diashunです。 「Find」関数(ステートメント?)が便利です。 参考:http://officetanaka.net/excel/vba/speed/s9.htm