I don't know how you made Range.End fail so miserably in Column C, but after I pasted all the values into a text editor, then pasted those back into C, it all worked OK. I mean Ctrl+Down Arrow would skip right past several cells with text in them, then stop on empty cells. Always the same cells.
Option Explicit
Sub SamT_MinMax()
Dim Instruction As Range
Dim FirstName As Range
Dim LastName As Range
Dim WSF As WorksheetFunction
'Application.ScreenUpdating = False 'Uncomment after testing
Set WSF = Application.WorksheetFunction
If Range("C2") <> "" Then
Set Instruction = Range("C2")
Else
Set Instruction = Range("C1").End(xlDown)
End If
Do
Set FirstName = Instruction.Offset(, -2)
Set LastName = FirstName
Do While LastName = LastName.Offset(1)
Set LastName = LastName.Offset(1)
Loop
Instruction.Offset(, 1) = WSF.Max(Range(FirstName, LastName).Offset(, 1))
Instruction.Offset(, 2) = WSF.Min(Range(FirstName, LastName).Offset(, 1))
If Instruction.Offset(1) <> "" Then
Set Instruction = Instruction.Offset(1)
Else
Set Instruction = Instruction.End(xlDown)
End If
Loop While Instruction.Row < Rows.Count
Application.ScreenUpdating = True
End Sub