|
んーと・・さらに数式を簡素化することも追加して
Sub Get_MyData()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim C As Range
Dim Rnm As Long
Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")
Sh1.Range("B2:D65536, AA:AA").ClearContents
With Sh1.Range("A2", Sh1.Range("A65536").End(xlUp)).Offset(, 26)
.Formula = "=MATCH($A2,Sheet2!$A:$A,0)"
On Error Resume Next
Intersect(.SpecialCells(3, 16).EntireRow, Sh1.Range("D:D")) _
.Value = "該当なし !"
On Error GoTo 0: On Error GoTo ELine
For Each C In .SpecialCells(3, 1)
Rnm = C.Value
C.Offset(, -25).Resize(, 3).Value = _
Sh2.Range(Sh2.Cells(Rnm, 2), Sh2.Cells(Rnm, 4)).Value
Next
ELine:
.ClearContents
End With
Set Sh1 = Nothing: Set Sh2 = Nothing
End Sub
何が変わったかと言いますと、#N/Aエラーはエラーとして表示させ、SpecialCells
メソッドの第二引数で、そのエラーのセルを検出するようにしたのです。これで先の
コードより少しすっきりしますね。
|
|