Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
With Sheet1
On Error Resume Next
.ShowAllData
i& = .Cells(Rows.Count, 1).End(xlUp).Row
If Not Intersect(ActiveCell, .Range("A2:A2")) Is Nothing Then
If .[A2] <> vbNullString Then
.Range("A4:H" & i).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
.Range("A1:A2"), Unique:=False
ElseIf .[A2] = vbNullString Then .ShowAllData
End If
End If
End With
Application.ScreenUpdating = True
End Sub