There are a few solutions, some automated, some manual.
1. Apply a filter to the range, filter the column containing the open-close statuses, update cells, then hit key combo (Ctrl+Alt+L) to reapply the filter after update. (Sounds like you want automation, but I figured I'd throw in a simple manual method also).
2. VBA. The Worksheet_Change event of the worksheet can be used to sense changes to just the desired column and implement a specific response. My response below is specifically what you initially asked for, moving the row to the top, but you could apply a sort in a similar manner.
Update 1: added strMoveStatus to allow you to set the status that causes the row to move more easliy. Added Application.EnableEvents = False and = True to turn off and on events to prevent self triggering per user suggestions.
Update 2: just grab the parts of the code below to your existing Worksheet_Change. If you want the Const more local to the Sub, be aware of the when they are used; nomColStatus would need to be declared outside the If.
'Stuff to add to the top of your worksheet's VBA module
Const numRowHeader = 1
Const numColStatus = 3
Const strMoveStatus = "Closed"
Private Sub Worksheet_Change(ByVal Target As Range)
' Your original worksheet_change content here
' Stuff to add to your current Worksheet_Change \/ \/ \/ \/ \/
' List of reasons this should run
If Target.Column = numColStatus and _
Target.Columns.Count = 1 and _
Target.Rows.Count = 1 Then
Application.EnableEvents = False 'prevent self triggering
If Target.Value = strMoveStatus Then
Me.Rows(Target.Row).Cut
Me.Rows(1).Offset(numRowHeader).Insert
End If
Application.EnableEvents = True 'allow future triggering
End If
' Stuff to add to your current Worksheet_Change ^ ^ ^ ^ ^
End Sub
Before update:

After update:
