• ベストアンサー

エクセル ある文字列が含まれるセルを検索する方法

初めて問い合わせします。大量のデータを検証しなければいけません。 関数などで方法を教えて頂ければ幸いです。 1セルに対し、1セルを検索する方法はわかっております(countifやifを使って) でも、セル単位ではなく文字列単位での検索方法を知りたいと思います。 わかりづらいかもしれませんが、現状をお知らせします。 シート1「登録データ一覧」(5万件) A列1行目 ア社 A列2行目 イ社 A列3行目 ウ社 A列4行目 エ社 A列5行目 ☆ーア社 A列6行目 ウー☆社 シート2「検索したい社名一覧」(500社) A列1行目 ア社 A列2行目 イ社 A列3行目 ウ社 <出したい結果> (1)検索したい会社が、シート1上で何社登録があるか ア社→【答え:2社】 イ社→【答え:1社】 ウ社→【答え:2社】 (2)登録データ一覧上、検索したい会社が存在するか ア社→【答え:○】 イ社→【答え:○】 ウ社→【答え:○】 エ社→【答え:×】 ☆ーア社→【答え:○】 ウー☆社→【答え:○】 よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

1)検索したい会社が、シート1上で何社登録があるか =COUNTIF(範囲,"*ア*社*") となれば上記の回答になります。 (2)登録データ一覧上、検索したい会社が存在するか {=IF(SUM(COUNTIF(セル,{"*ア*社*","*イ*社*","*ウ*社*"})),"○","×")} と配列数式にすれば結果は出せます。 ※配列数式は{}無しの状態を入力して、Ctrl+Shift+Enterで設定できます。 つまり "ア社" を "*ア*社*" に変換できるようにすればOKなのですが 中間に*を追加できる関数がないのでユーザー定義する必要があります。 Function MOJIPLUS(MOJI) Dim MOJIP(1 To 500) For Each Mc In MOJI Mx = Mx + 1 ML = Len(Mc) For I = ML To 1 Step -1 MOJIP(Mx) = Mid(Mc, I, 1) & "*" & MOJIP(Mx) Next I MOJIP(Mx) = Replace("*" & MOJIP(Mx), "**", "*") Next Mc MOJIPLUS = MOJIP End Function 上記で500セルまでの範囲のセルに対応できますがその分、メモリを食うので検索データ数の増減はご自身でご検討ください。 (1)=COUNTIF(範囲,MOJIPLUS(検索文字)) (2){=IF(SUM(COUNTIF(セル,MOJIPLUS(検索文字の範囲))),"○","×")} で計算できるはずです。

kinkan0612
質問者

お礼

ご回答ありがとうございました。 今回は、これだといくつか問題が発生してしまった為、counifに*を入れて検索し、目で調べる方法で処理しました。 しかし、このユーザー定義のおかげで、他の作業がとても楽になりました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.7

#06です 本当の目的はシート2に「エクセル」という文字列があり、シート1の会社名から「エクセル」という文字列を含む会社の数を検索したいということでしょうか。これなら関数で可能です。 B1の式は以下の通りです =COUNTIF(Sheet1!A:A,"*"&A1&"*") (COUNTIF関数はワイルドカードが使用できます) 質問では「ウ」と「社」の両方の文字列を含む会社の数を検索したいとおっしゃっているように読み取れました。もしシートに「エクセル社」と文字列があって、「エクセル」と「社」の両方を含む会社の数を検索しようとすると、これは実現が困難です。 それは「エクセル,社」「エク,セル社」「エ,クセル社」のように文字列のどこを区切りににして検索すれば良いのかが機械的に判定できないからです。

kinkan0612
質問者

お礼

ご回答ありがとうございました。 説明の仕方があまりうまくなく、混乱させてしまったこと、お詫び致します。 わかりやすい説明をありがとうございました。 今後ともよろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

補足要求です >ウ社→【答え:2社】 とのことですが、これはシート1の「ウ社」と「ウー☆社」が該当するのでしょうか? すると具体的な例で書くと、シート1に「宇宙株式会社」「宇宙有限会社」「宇宙電気株式会社」「小宇宙社」がある場合は  「宇社」→【答え:4社】 になるのですか? 何か変ですね。 また「小宇宙社」はシート2に「宇社」と「小社」があった場合どちらでカウントするのが正しいのでしょうか。 集計の条件をもう少し補足していただけませんか

kinkan0612
質問者

補足

ご回答ありがとうございました。 確かにおっしゃるとおりの内容ではおかしいのですが、検索したい500社が正式社名となっており、zap35さんの例のような件数は少ないと考えています。 たとえば「エクセル」という会社の検索をしたい場合、「エクセル」はヒットしても「エクセル 経理部」がヒットしない方が困る件が多数出た為、今回の問い合わせとなりました。 ※「エクセルインターナショナル」がヒットしてしまってもいたしかたない状況と考えています。 100%正しいデータを作りたいのですが、私では力不足ゆえ、こういった方法を探すこととなりました。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
noname#91219
noname#91219
回答No.5

考えていましたが、☆の部分が確定していない場合は(1)は関数だけでくむのはかなり難しいと思います。 (「有限」・「株式」などある程度決まっていればよいかもしれませんが) No3の方の通りマクロで実行してみてはどうでしょうか? (2)については =IF(COUNTIF(Sheet1!$A$1:$A$50000,Sheet2!A●)>0,"○","×") で良いと思います。検索と言うことは一つのセルに入力した後結果が出るようにするのでしょうか?その場合は●を入力欄に合わせます。

kinkan0612
質問者

お礼

早速のご回答、ありがとうございました。 おっしゃる通り、マクロ実行しかないのかもしれません。 初めての単語もある為、少し時間をかけて考えてみようと思います。 お時間割いていただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.4

はじめまして 勝手に話を変えちゃいけないとは思うのですが、察するところ「☆」は「株式会社」表すのではないかと… シート1「登録データ一覧」(5万件) A列1行目 マルビシ A列2行目 上田屋 A列3行目 たつなみ A列4行目 Koide A列5行目 株式会社マルビシ A列6行目 たつなみ株式会社 シート2「検索したい社名一覧」(500社) A列1行目 マルビシ A列2行目 上田屋 A列3行目 たつなみ …でよろしければ… シート1のB1に =IF(ISERROR(FIND("株式会社",A1)),A1,IF(FIND("株式会社",A1)=1,MID(A1,5,100),LEFT(A1,LEN(A1)-4))) これをB50000迄コピー(B1セルの右下にカーソルを合わせカーソルが十字に変わったらダブルクリック)する。 シート2のB1に =COUNTIF(Sheet1!$B$1:$B$50000,Sheet2!A1) これをB500までコピーB1セルの右下にカーソルを合わせカーソルが十字に変わったらダブルクリック)する。 シート1のC1に =IF(COUNTIF(Sheet2!$A$1:$A$500,Sheet1!B1),"○","×") これをC50000迄コピー(C1セルの右下にカーソルを合わせカーソルが十字に変わったらダブルクリック)する。 これでいかがでしょうか? 勝手に変えてしまいましてごめんなさい。

kinkan0612
質問者

お礼

ご回答ありがとうございました。 しかし、「株式会社」などは元々入力しないように整理しているデータベースなので、伺いたかった事ではありません。 お時間割いていただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#91219
noname#91219
回答No.2

すみません、ちゃんと読んでませんでした。ちょっと待ってください。

全文を見る
すると、全ての回答が全文表示されます。
noname#91219
noname#91219
回答No.1

(1)検索したい会社が、シート1上で何社登録があるか ア社→【答え:2社】 イ社→【答え:1社】 ウ社→【答え:2社】 を出すには、COUNTIFが使えると思います。 たとえばシート3上に =COUNTIF(Sheet1!$A$1:$A$50000,Sheet2!A1) これをA500までコピーすればよいと思います。 条件複写なので、検索範囲が崩れると困るので$でAを囲んでおきます。 ちなみに「COUNTIF(範囲,検索条件)」は、範囲内で条件に一致するのは何件あるかを表示します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel(2000)で行毎にセルをみて、値を返す

    例えば、以下のようなデータがあったとして、各行毎に左から見た結果、最初にデータがあったセルの列の1行のセルの値を各行のG列に返したい。 ______A__B__C__D__E__F__G__ 1行_ア__イ__ウ__エ__オ__カ____ 2行_1__3__5__2__4__1__ア__ 3行_____2__5__1__5__4__イ__ 4行_____________2__8__2__エ__ 5行_____2______2__1__4__イ__ 6行_________5______2______ウ__ G列に結果。 例えば、G3のセルに何らかの関数を入れて、A3~F3を左から見た結果、B3に2というデータがあるので、その列の1行であるB1の値、イをG3に返すといったないようです。 _ は、スペースをとるためのものです。 実際のデータは500行あり、各行の検索する列数は23列あります。 よろしくお願い致します。

  • 【Excel】複数ある特定の値を検査値として、同一行の特定列の値を返す方法を教えてください

    はじめまして。 表現の仕方がわからなかったのですが、 複数ある特定の値を検査値として、同一行の特定列の値を返す方法 わかる方いらっしゃいましたら教えてくださいm(__)m 例えば・・・ 【シート1】      【シート2】   A  B C D        A B C 1 あ 月 ア 一     1 う エ   2 う 火 エ 二     2 え イ 3 い 木 ウ 三     3 4 え 火 イ 四     4 とあった場合、 【シート1】のB列の”火”を検査値として ”火”のある2行目と4行目のA列C列の値のみを 【シート2】の特定のセルに表示させる方法を教えてください。 よろしくお願いします。

  • エクセル セルデーターの統合

    エクセルのセル(行)にあるデーターを統合したいのですが・・・。 列も行もかなりあり、共通のデーターは何個かあります。下の例では、ア01とイ01です。 その他は、ア02とイ02という具合にセットになってます。 どちらかの行(ここでは1と3)にデーターをまとめる。 【例】 ***A列|B列|C列|D列|E列|F列| 1|ア01|イ01|ウ*|空白|エ*|空白| 2|ア01|イ01|空白|カ*|空白|キ*| 3|ア02|イ02|ク*|空白|ケ*|空白| 4|ア02|イ02|空白|コ*|空白|ナ*| 【完了後】 ***A列|B列|C列|D列|E列|F列| 1|ア01|イ01|ウ*|カ*|エ*|キ*| 3|ア02|イ02|ク*|コ*|ケ*|ナ*| このような、データーの簡単な結合方法は、ありませんか?

  • エクセル 検索した値の列の一番上をかえすには?

    4×5の表にアルファベットがランダムに重複なく入っている表で、指定したアルファベットのがどの列にあるか求めるにはどうしたら良いでしょうか。 列のタイトルを「あ、い、う、え、お」、 行のタイトルが「ア、イ、ウ、エ」の表で、例えばaがう-イのにあるときに、「う」という値を表示したいです。 A B C D E F 1 □ あ い う え お 2 ア m 3 イ k a … 例:検索値A→結果う よろしくお願いします。

  • VBAを使ったセルの結合

    パソコンとVBA使用初心者です。 今仕事でVBAを使ってプログラムを作成しようとしています。 皆様にご教授していただきたいことが在ります。 ・ABCDEFGH…… 1あ ア 2 イ 3 ウ 4 エ 5 オ 6い ア 7 イ 8 ウ 9う ア 10え ア 11 イ 12 ウ 13お ア 14 イ 15 わかりにくいかもですが上のようなエクセルがあり A1から次の文字手前のセルまでを結合したいのですが、どのように書いたら出来ますか? それと最後の方のA13とA14だけの結合でその下は処理しない方法ありますか? 必ずC列には文字が入っています。 すいません…カタカナはC列です。 ひらがなはA列に飛び飛びで記入してあります

  • Excelデータ降順 またその隣のセルの値を表示

    この度はよろしくお願い致します。 A列に下のような数字があり、この上位3つを大きい順に並べ、またその行のB列C列も引っ張ってくる方法はありますか?   A  B  C 1  6  あ ア 2  9  い イ 3  7  う  ウ 4  9  え エ 5  8  お オ    ↓   A  B  C 1  9  い イ 2  9  え エ 3  8  お オ データの昇降以外の、関数での解決を考えています。 お知恵を拝借下さい、よろしくお願い致します。

  • Excelで、文字列を含むセルの検索をしたい

    Excelで、文字列を含むセルの検索をしたいと思います。 列Aには、探したい文字列(市町村名)が800行入っています。 (1行目)○○市 (2行目)△△町 (3行目)□□□村 ・・・以下続く・・・ 列Bには、検索対象となる文字列(住所)が7000行入っています。 (1行目)XX県XX市XX-XX-XX (2行目)XX県○○市XXXXXX-XXX-X (3行目)XX府XXX郡□□□村XXX ・・・以下続く・・・ このとき、 「列Aにある文字列(市町村名)を含む列B(住所)のセル」を検索したいのです。 (上記の例の場合は2行目・3行目がヒット。) シートや列は追加してかまいません。 件数が多いため、どのように探すと効率的か見当がつきません。どなたかよい知恵をお貸しください。よろしくお願いします!

  • エクセルで5セルごとに参照したい。

    エクセルで、 あいうえおかきく...等とセルが一列に並んでいる時に、 そのセルへ式を使って入力するのに参照したい別の行があります。 ア□□□□イ□□□□ウ□□□□…という風に、5セルごとに参照したい列があります。 セルあ「VLOOKUP($A1,Sheet1!$A:$Z,1,FALSE)」 セルい「VLOOKUP($A2,Sheet1!$A:$Z,6,FALSE)」 セルう「VLOOKUP($A2,Sheet1!$A:$Z,11,FALSE)」 上のような感じで、でもいちいち数字を入力せずに、セルの左下を引っ張ったらうまく参照されるような式、ないでしょうか。。。

  • 同じ行だが、A列を選択させるマクロ

    マクロを組んでいます。 以下のように、4行3列のデータがある場合に・・・ 1  A  ア 2  B  イ 3  C  ウ  4  D  エ 「B」のセルが選択されていても、その左端にある数字の2のセルを選択させるようにする。 「エ」のセルが選択されていても、その左端にある数字の4のセルを選択させるようにする。 ・・・というマクロは、どのように組んだらよいでしょうか? アドバイスを、よろしくお願いいたします!  

  • セル間のカウント関数の作り方を教えてください

      A列  B列C列D列 2009/4/25 ○ 2009/4/25 × 2009/4/25 × 2009/4/25 × 2009/4/25 × 2009/4/25 × 2009/4/25 × 2009/4/25 × 2009/4/25 ○ ア 2009/4/25 × 2009/4/25 × 2009/4/25 ×  イ 2009/4/26 × 2009/4/26 × 2009/4/26 × 2009/4/26 × 2009/4/26 × 2009/4/26 × 2009/4/26 ○ ア 2009/4/26 × 2009/4/26 × 2009/4/26 × 2009/4/26 × 2009/4/26 ○ ア イ         最大X数  最大×日数          ウ  エ 初めて質問します、エクセル初心者ですが、上記のように○から○の間の×をカウントする関数式を教えてください。 B列の○から○間のX数をC列の○横のアに×数をカウント、A列の同じ日付12行内に1つも○がなければD列イに1を入れる。 C列ウには、C列アの中での最大X数を表記 D列エにはD列イが2日連続以上で続いたときのみ、その連続日数を入れる。 1日しかなければ1、連続2日間あれば2と入れる。 ア、イ、ウ、エ共に○、×以外の文字列と空白はカウントしない。 色んなエクセル関連本を読んでは探しているのですが、恥ずかしながら上手くできません。 皆様のお知恵をお貸し願います。

専門家に質問してみよう