• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA、2重の検索方法について)

エクセルVBAで2重の検索方法

このQ&Aのポイント
  • エクセルVBAで2重の検索方法について詳しく解説します。
  • キーワード1で検索されたデータの中から、キーワード2でさらに絞り込みする方法をご説明します。
  • Do Loopを使用して、キーワード1で検索されたデータの中からキーワード2で絞り込む手順をご紹介します。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

前回回答したmerlionXXです。 > この記述だと、一番最初にキーワード1でひっかかったものしかキーワード2を検索しないので・・・。 だって、最初ご提示のコードは転記先が、「別の指定した行」などという変数になっていたので1つしかないものと思いましたよ。 いくつもあるなら変数じゃうけられないでしょ。 以下の前提でかきます。 元データはSheet1にある。 該当した行は、Sheet2に1行目から順に転記する。 実際にはシート名はちがうでしょうから   Set ws(1) = Sheets("Sheet1")   Set ws(2) = Sheets("Sheet2") の部分を修正してください。 Sub test03()   Dim ws(1 To 2) As Worksheet   Dim Keyword, Keyword2   Dim Fnd As Range, Fnd2 As Range, c As eange   Dim i As Long, ad As String   Set ws(1) = Sheets("Sheet1")   Set ws(2) = Sheets("Sheet2")   '入力されたキーワードを変数Keywordに入れる   Keyword = InputBox("キーワードを入力してください")   Keyword2 = InputBox("キーワード2を入力してください")   With ws(1)     Set Fnd = .Range("C:C").Find(Keyword) 'C列検索     If Fnd Is Nothing Then 'もし、C列にキーワードが見つからなかったら       MsgBox "データはありません"     Else 'キーワードが見つかったら       ad = Fnd.Address 'アドレスを控える       Do '繰り返し         For Each c In .Range("E" & Fnd.Row).Resize(, 22)           If c.Value = Keyword2 Then 'Keyword2検索             i = i + 1             c.EntireRow.Copy ws(2).Rows(i) 'Keyword2が見つかったセルを含む行全体をコピペ             Exit For           End If         Next c         Set Fnd = .Range("C:C").FindNext(Fnd) '検索続行       Loop While Not Fnd Is Nothing And Fnd.Address <> ad     End If   End With End Sub

itu05221997
質問者

お礼

たびたび、どうもすみませんです。>Д< 本業の合間にやっておいてと言われたもので、VBAは本当にさわり程度しか・・・・。 今、仕事の合間に本を見て理解に励んでいます。 皆さんはやはり専門に勉強なさったのですか? それとも独学なのでしょうか。 何か、コツがあったら教えていただきたいです。

関連するQ&A