Usando o VBA / Macro:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim wks As Worksheet
Set wks = ActiveSheet
filterrow = 2 'row of the filter cell
filtercolumn = 4 'column of the filter cell
criteriacolumn = 2 'number of column of the criteria list
firstrow = 2 'first row on the criteria list
resultcolumn = 5 'number of columns where to show the results
thecriteria = Target.Value
Dim critarray() As Variant
therow = Target.Row
thecolumn = Target.Column
lastitem = 0
wks.Columns(resultcolumn).ClearContents
If (therow = filterrow) And (thecolumn = filtercolumn) Then
lastrow = wks.Cells(Rows.Count, criteriacolumn).End(xlUp).Row
ReDim critarray(lastrow)
For i = firstrow To lastrow
tempcriteria = wks.Cells(i, criteriacolumn)
templist = wks.Cells(i, criteriacolumn + 1)
If tempcriteria = Target.Value Then
repeated = False
For j = 1 To lastitem
a = critarray(j)
If a = templist Then
repeated = True
j = lastrow
End If
Next j
If repeated = False Then
lastitem = lastitem + 1
critarray(lastitem) = templist
wks.Cells(lastitem, resultcolumn) = templist
End If
End If
Next i
End If
Application.EnableEvents = True
End Sub
Abra o VBA / macros usando ALT + F11, clique duas vezes na folha e cole o código no lado direito. Existem variáveis que você pode modificar para adequar a macro à sua planilha.
Ele usa a célula D2 como o valor do filtro e gera o resultado na coluna E .