以下の方法で試してみてください。
Sub TestDic()
Dim LastRow As Long, i As Long
Dim C_List As Object
Dim C_Value As Variant
Set C_List = CreateObject("Scripting.Dictionary")
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = 3 To LastRow
If C_List.exists(Cells(i, "B").Value) = False Then
C_List.Add Cells(i, "B").Value, Cells(i, "B").Value
End If
Next
For Each C_Value In C_List
Range(Cells(2, "B"), Cells(LastRow, "E")).AutoFilter Field:=1, Criteria1:=C_Value
MsgBox C_Value
Next
Set C_List = Nothing
End Sub
MsgBox CValue
のところをコピーのコードに変更してください。
あと作業列を使ってコードを簡単にする場合
A列が開いているので仮にA列を使うとして
A3に
=IF(COUNTIF($B$3:B3,B3)=1,B3,"")
として必要なだけ下にコピーします。
VBAで以下のようにして
MsgBox Cells(i, "A").Value
のところをコピーのコードに変更してください。
Sub Test()
Dim LastRow As Long, i As Long
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
For i = 3 To LastRow
If Cells(i, "A").Value <> "" Then
Range(Cells(2, "B"), Cells(LastRow, "E")).AutoFilter Field:=1, Criteria1:=Cells(i, "A").Value
MsgBox Cells(i, "A").Value
End If
Next
End Sub