Hi Ham,

Maybe something like:

Private Sub Worksheet_Change(ByVal Target As Range)    
    If Not Intersect(Target, Range("G2:G1000")) Is Nothing Then
        If Range("Q" & Target.Row) = 0 Or Range("Q" & Target.Row) = 1 Then
            Range("G1:G1000").Sort Key1:=Range("G2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        End If
    End If
End Sub
Hope this helps