Sub MatchKeywordsAndOutputPaths()
' 変数宣言
Dim wsKeywords As Worksheet
Dim wsPaths As Worksheet
Dim lngLastRowKeywords As Long
Dim lngLastRowPaths As Long
Dim lngRowKeyword As Long
Dim lngRowPath As Long
Dim strKeyword As String
Dim strPath As String
' ワークシートオブジェクトの設定
Set wsKeywords = ThisWorkbook.Sheets("Sheet1")
Set wsPaths = ThisWorkbook.Sheets("Sheet2")
' 各シートの最終行を取得
lngLastRowKeywords = wsKeywords.Cells(wsKeywords.Rows.Count, "A").End(xlUp).Row
lngLastRowPaths = wsPaths.Cells(wsPaths.Rows.Count, "A").End(xlUp).Row
' Sheet1のキーワードを1つずつ確認
For lngRowKeyword = 1 To lngLastRowKeywords
strKeyword = wsKeywords.Cells(lngRowKeyword, 1).Value
' Sheet2のパスを確認
For lngRowPath = 1 To lngLastRowPaths
strPath = wsPaths.Cells(lngRowPath, 1).Value
' キーワードがパスに含まれているかチェック
If InStr(strPath, strKeyword) > 0 Then
' マッチしたらSheet1のB列にパスを出力
wsKeywords.Cells(lngRowKeyword, 2).Value = strPath
' 1つ見つかれば次のキーワードへ
Exit For
End If
Next lngRowPath
Next lngRowKeyword
End Sub
コメント