• ベストアンサー

2つの列を照合させてあいまい検索をしたいのですが

A列とB列にあるデータを照合させて、A列のデータにB列の一部が含まれる場合にC列に印をつけるようにしたいのですが、どうすればいいですか? A列には会社組織名称が入っていますが、入力されている内容が前(株)、後(株)の企業が混合しており、(株)と組織名称の間にスペースが入っていたり入っていなかったりと入力規則もバラバラです。そのうえ、組織名称が(株)○○本社や○○(株)××工場などとなっているものもあります。 B列には(株)等の商号なしの企業名が入っています。(例:○○) A列のデータがB列にあるものかどうかを調べたいのですが、どんな関数を使えばいいのでしょうか? Vlookupだと、このようなあいまい検索はできませんよね? いくつかのステップを踏んでもOKです。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

次の方法は如何でしょうか。 C1セルに=IF(COUNTIF(A:A,"*"&B1&"*")>0,"○","")を設定し、下方向にコピーして下さい。

macattack
質問者

お礼

どうもありがとうございます!こうやってあいまい検索の式を表せるのか!と感動しました!! で、やってみたのですが、どうやら反対みたいなのです。 A列のデータがB列にある場合、A列のデータ存在に対してC列に○をつけたいのです。(説明が下手ですみません。分かりますか?) ちなみに、A列には1~2393行までデータが入っていて、B列には1~1596までしかデータが入っていません。 アドバイス、お願いします!

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

no3です。 初回のご回答補足で「反対」とのご指摘を勘違いしておりました、お詫びします。 私案では、A列に対応したC列に照合結果を表示する事はできません。 仮にA列の名称の○○部分を特定できるルールがあれば可能か知れませんが、バリエーションが多いと思いますのでVBAを利用する方法で再質問をして頂いた方が早期解決かと思います。

macattack
質問者

お礼

いえいえ、ご親切にありがとうございました。 私もいろいろと考えた結果、最初に教えていただいた関数を使って照合させて、C列に○がついたものを再度A列で検索していくことにしました。 おっしゃるとおり、関数で解決する問題ではないのかもしれません。 ありがとうございました!

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆これで、いかがでしょうか? C1=IF(B1="","",IF(COUNTIF(A:A,"*"&B1&"*")>0,"○","")) ◆それ以外にも、こんな方法もありますよ C1=IF(B1="","",IF(COUNT(INDEX(FIND(B1,$A$1:$A$5),)),"○","")) >Vlookupだと、このようなあいまい検索はできませんよね? C1=IF(B1="","",IF(ISNA(VLOOKUP("*"&B1&"*",$A$1:$A$7,1,0)),"","○")) ★下にコピー

macattack
質問者

お礼

ありがとうございます。 御礼が遅くなってすみません。 やはり希望通りにはいかないようです。 でも、Vlookupであいまい検索ができることがわかっただけでありがたいです!

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

no1です。 C1セルに=IF(COUNTIF(B:B,"*"&A1&"*")>0,"○","")を設定し、下方向にコピーして下さい。

macattack
質問者

お礼

たびたびすみません。 今度はまったく○がつかなくなりました。 Aが空白セルだとC列に○がついています。

  • 001die
  • ベストアンサー率38% (23/59)
回答No.2

あまり自信は無いですが、【IF】を使って文字列を参照させて C列に表示させるしか、無いかと思います。 私も同じ様な事があって、この方法で回避しました。 他にも、やり方はあるのかもしれませんが・・・ Excelは基本的に入力規則が決まっているのが前提らしいので、 最初に決めておくのがよいのでしょうね。

macattack
質問者

お礼

ありがとうございます。 おっしゃるとおり、最初から入力規則を決めておけばいいのですが、 今回はもともとあるデータが元になっているため、どうしようもありません。。。

関連するQ&A