Una idea con VBA
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim filterRange As Range
Dim selectedValue As String
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Hoja1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set filterRange = ws.Range("A4:D" & lastRow)
If Not Intersect(Target, ws.Range("B2")) Is Nothing Then
selectedValue = ws.Range("B2").Value
filterRange.AutoFilter Field:=1, Criteria1:=selectedValue
If selectedValue = "" Then
filterRange.AutoFilter
End If
End If
End Sub