|
シートを追加してそこのA列に「抽出リスト」を書いておく
というばあいは、こんな風になります
シートは
> Set WS1 = Worksheets("Sheet1")
> Set WS2 = Worksheets("抽出")
> Set WS3 = Worksheets("抽出リスト")
と変数にしていますので、
シート名を環境に合わせてください。
(結合セルでは Copyで転記できないので、
先範囲.Value = 元範囲Value
としています)
Sub マッチング2()
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim 検索範囲 As Range, 該当セル As Range
Dim FirstHitRow As Long
Dim 転記先行 As Long '最初にヒットした行番号
Dim tbl As Variant, v As Variant
Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("抽出")
Set WS3 = Worksheets("抽出リスト")
With WS1 '「検索範囲」は A列
Set 検索範囲 = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
End With
転記先行 = 5 '「転記先行」はO列 5行目から
With WS3
tbl = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Value 'A列 抽出データ
End With
For Each v In tbl
Set 該当セル = 検索範囲.Find(v, , xlFormulas, xlWhole)
If Not 該当セル Is Nothing Then '該当セルが見つかった場合は
FirstHitRow = 該当セル.Row '最初にヒットした行番号
Do
WS2.Cells(転記先行, 3) = 該当セル() 'C列に上書き
CopyLine 該当セル, WS2.Cells(転記先行, 15) '21列をコピー
転記先行 = 転記先行 + 2 '転記先行に2を加算する。
Set 該当セル = 検索範囲.FindNext(該当セル) '次を検索
Loop While 該当セル.Row <> FirstHitRow
End If
Next
End Sub
Private Sub CopyLine(該当セル As Range, 転記先 As Range) '◆変更
転記先.Resize(, 21).Value = 該当セル.Offset(, 1).Resize(, 21)()
End Sub
|
|