You could use a loop, or avoid one by using perhaps vlookup within the vba or range.find.
Hang on, if you're using offset(,-16) that implies that you're using column A of the Detail Report sheet, so no you won't need a loop; your code shouldn't be very different from the PR Code one.
What's your code for this so far?
Bed time here.