Для этих целей существует фильтр.
А к фильтру макрос.
[vba]Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
Application.ScreenUpdating = False
With Sheets(1)
If .AutoFilterMode Then .AutoFilter.Range.AutoFilter
.Select
.Range("A3").CurrentRegion.Resize(, 8).Select
.Range("A3").CurrentRegion.Resize(, 8).AutoFilter Field:=1, Criteria1:=Range("$B$1").Value
Range("B3").CurrentRegion.Resize(, 8).ClearContents
.AutoFilter.Range.Copy Range("$B$3")
Me.Select
If .AutoFilterMode Then .AutoFilter.Range.AutoFilter
End With
End If
End Sub
[/vba]