こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

現在、シートのA2にキーワード欄を設けて、A5:Z5以下にあるデータ(文字列)から
該当した文字のみサイズ変更と該当セルの色づけをVBAで行っています。

キーワードが1つずつしか検索出来ないことと、A5以下のデータ(文字列)を
別のブックから都度貼り付けることに不便を感じております。

そこでご質問ですが
キーワードとデータを異なるブックで用意し、キーワード側のVBAでデータファイルを
検索し、文字サイズとセルの色づけを実施するのはVBAで可能でしょうか。
(キーワードは複数有り、増減します。)

尚、VBAは入門レベルです。
宜しくお願い致します。

投稿日時 - 2013-08-16 23:42:26

QNo.8222863

困ってます

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

マクロを登録したブックのシート名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以下に貼り付けるのはやめて元のブックのどこにデータがあるのか不明→気にしない

投稿日時 - 2013-08-17 02:54:26

お礼

お教え頂きありがとうございました。
正に知りたい内容でした。

「該当」の具体的な条件を部分一致、セルの色づけを加えるだけで、そのまま使わせて頂いております。

本当にありがとうございました。

投稿日時 - 2013-08-19 22:53:51

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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行目に(隙間無く)キーワードを羅列してお試しくださいませ。

投稿日時 - 2013-08-17 00:48:36

お礼

再び投稿いただきありがとうございます。

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

投稿日時 - 2013-08-18 00:59:57

ANo.1

> VBAで可能でしょうか。

と聞かれると、「出来ますよ」としか言いようがないのですが・・



要するに、簡単に書こうと思えば、

「データファイル」を開き、そこに「キーワード」に従って色づけなりしてやれば良いです。
「キーワードが複数」であれば、その「キーワードの数だけ」繰り返してやればOKです。

投稿日時 - 2013-08-17 00:26:43

お礼

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

投稿日時 - 2013-08-18 00:54:54

あなたにオススメの質問