One way, and there are better ways:
Sub PrError2()
For x = 1 To 10001
If Sheets("Detail Report").Range("C" & x) = "PR Code" Then
If Worksheets("As Built").Range(Sheets("Detail Report").Range("A" & x).Value).Value = Sheets("Detail Report").Range("E" & x).Value Then
Worksheets("Generalized Report").Range("C16").Value = Worksheets("Generalized Report").Range("C16").Value + Worksheets("As Built").Range(Sheets("Detail Report").Range("A" & x).Value).Offset(, -3).Value
End If
End If
Next x
End Sub
Broken down a bit, can be re-written:
Sub PrError3()
Set CellToIncrement = Worksheets("Generalized Report").Range("C16")
For x = 1 To 10001
If Sheets("Detail Report").Range("C" & x) = "PR Code" Then
Set CellOnAsBuiltSheet = Worksheets("As Built").Range(Sheets("Detail Report").Range("A" & x).Value) 'This uses the cell ref in column A of the Detailed Report sheet to identify that cell on the As Built sheet.
If CellOnAsBuiltSheet.Value = Sheets("Detail Report").Range("E" & x).Value Then
CellToIncrement.Value = CellToIncrement.Value + CellOnAsBuiltSheet.Offset(, -3).Value
End If
End If
Next x
End Sub
Note the names of these macros are not quite your original ones - tweak as necessary.
ps. your Reset macro could be a bit shorter:
Sub reset()
'Resets Values on Generalized Report
With Worksheets("Generalized Report")
.Range("A4:D4,A6:D6,A8:D8,A10:D10,A12:C12,A14:D14,A16:D16,A18:D18,A20:D20,A22:B22,A25:D25,A27,D22") = 0
.Range("A28") = ""
End With
End Sub