• ベストアンサー

Excelでキーワード検索(異なるブックで)

現在、シートのA2にキーワード欄を設けて、A5:Z5以下にあるデータ(文字列)から 該当した文字のみサイズ変更と該当セルの色づけをVBAで行っています。 キーワードが1つずつしか検索出来ないことと、A5以下のデータ(文字列)を 別のブックから都度貼り付けることに不便を感じております。 そこでご質問ですが キーワードとデータを異なるブックで用意し、キーワード側のVBAでデータファイルを 検索し、文字サイズとセルの色づけを実施するのはVBAで可能でしょうか。 (キーワードは複数有り、増減します。) 尚、VBAは入門レベルです。 宜しくお願い致します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

マクロを登録したブックのシート名Sheet1のA2以下のセルにキーワードが羅列してある 対象のブックを選んでキーワード検索する sub macro1()  dim h as range  dim myFile as string  dim myBook as workbook  dim w as worksheet  dim c as range  dim c0 as string  myfile = application.getopenfilename(Title:="Select Target book")  if myfile = "False" then exit sub  set mybook = workbooks.open(filename:=myfile)  for each w in mybook.worksheets   for each h in thisworkbook.worksheets("Sheet1").range("A2").currentregion    if h <> "" then     set c = w.cells.find(what:=h.value, lookin:=xlvalues, lookat:=xlwhole)     if not c is nothing then      c0 = c.address      do       c.font.color = vbred       c.font.size = 24       set c = w.cells.findnext(c)      loop until c.address = c0     end if    end if   next  next  msgbox "DONE" end sub #説明不足 「該当」の具体的な条件→完全一致とする 「増減したキーワード」がどこに記入してあるのか→てきとーに拾う 「文字サイズとセルの色付け」→てきとーにしてある  対象のブックに何枚シートが含まれていてどのシートを処理したいのか→てきとーに細工してある  ご利用のエクセルのバージョンも不明→どのバージョンでも一応動くようにしてある  A5:Z5以下に貼り付けるのはやめて元のブックのどこにデータがあるのか不明→気にしない

ZGE20G
質問者

お礼

お教え頂きありがとうございました。 正に知りたい内容でした。 「該当」の具体的な条件を部分一致、セルの色づけを加えるだけで、そのまま使わせて頂いております。 本当にありがとうございました。

その他の回答 (2)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

あまりにもアレかしら(笑)。 とりあえず・・「他のブックを操作する」のは自力でお調べいただくとして。 同一ファイル(同一シート)内に「キーワード」「データ」がある場合のお話です。 Sub Sample() Dim myStr As String Dim MCol As Long, MRow As Long, i As Long     MCol = Cells(2, Columns.Count).End(xlToLeft).Column 'キーワードの最終列     MRow = Cells(Rows.Count, 1).End(xlUp).Row      'データ範囲の最終行     Application.ReplaceFormat.Interior.Color = RGB(255, 255, 0) '置換後の背景=黄色     For i = 1 To MCol  'キーワードの最終列まで繰り返す         '置換処理(キーワードと合致するものを対象)         Range("A5:Z" & MRow).Replace What:=Cells(2, i).Value, _                        Replacement:=Cells(2, i).Value, _                        LookAt:=xlWhole, _                        ReplaceFormat:=True '←置換後の書式ON     Next End Sub こんな感じで「置換機能」を使ってやると比較的早く終わります。 添付図のように、2行目に(隙間無く)キーワードを羅列してお試しくださいませ。

ZGE20G
質問者

お礼

再び投稿いただきありがとうございます。 今までキーワードを一つ入力しては検索を行い、又、次のキーワードを入力して・・・ でしたので、複数検索が一度に可能となるだけでも大助かりです。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

> VBAで可能でしょうか。 と聞かれると、「出来ますよ」としか言いようがないのですが・・ 要するに、簡単に書こうと思えば、 「データファイル」を開き、そこに「キーワード」に従って色づけなりしてやれば良いです。 「キーワードが複数」であれば、その「キーワードの数だけ」繰り返してやればOKです。

ZGE20G
質問者

お礼

ご回答ありがとうございました