Maybe:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:B1, A5:F5")) Is Nothing Then
        Select Case Target.Address
            Case "$A$5"
                If Range("A5").Value = "" Then
                    Range("A6:F37").AutoFilter Field:=1
                Else
                    Range("A6:F37").AutoFilter Field:=1, Criteria1:=Range("A5").Value
                End If
            Case "$B$5"
                If Range("B5").Value = "" Then
                    Range("A6:F37").AutoFilter Field:=2
                Else
                    Range("A6:F37").AutoFilter Field:=2, Criteria1:=Range("B5").Value
                End If
            Case "$C$5"
                If Range("C5").Value = "" Then
                    Range("A6:F37").AutoFilter Field:=3
                Else
                    Range("A6:F37").AutoFilter Field:=3, Criteria1:=Range("C5").Value
                End If
            Case "$D$5"
                If Range("D5").Value = "" Then
                    Range("A6:F37").AutoFilter Field:=4
                Else
                    Range("A6:F37").AutoFilter Field:=4, Criteria1:=Range("D5").Value
                End If
            Case "$A$1", "$B$1"
                If WorksheetFunction.Count(Range("A1:B1")) < 2 Then
                    Range("A6:F37").AutoFilter Field:=6
                Else
                    Range("A2:F37").AutoFilter Field:=6, Criteria1:=">=" & Range("A1").Value, _
                                        Operator:=xlAnd, Criteria2:="<=" & Range("B1").Value
                End If
        End Select
    End If
End Sub