Match関数がいいらしい。
でも同じ条件の行があったら最初の行しか返してくれない
見つからないと例外にあんるので on error resume next も欠かせない。
Sub match()
Dim workSh, prefSh As Worksheet
Set workSh = ThisWorkbook.Worksheets("Sheet1")
Set prefSh = ThisWorkbook.Worksheets("Sheet2")
Dim prefRng As Range
Set prefRng = Range(prefSh.Cells(2, 2), prefSh.Cells(48, 2))
Dim workEndR, workTmpR As Long, tmpStr As String
workEndR = workSh.Cells(Rows.Count, 1).End(xlUp).Row
For workTmpR = 2 To workEndR
tmpStr = workSh.Cells(workTmpR, 1).Value
On Error Resume Next
workSh.Cells(workTmpR, 2).Value = prefSh.Cells(Application.WorksheetFunction.match(tmpStr, prefRng, 0) + 1, 1)
If Err <> 0 Then
workSh.Cells(workTmpR, 2).Value = "ERROR"
Err.Clear
End If
Next
End Sub