joe
Here is my interpretation of what you want. Test on a copy of your workbook.
This copies (should) all the rows for an agent at once.
<font face=Courier New><br><SPAN style="color:#00007F">Sub</SPAN> Split_Agents()<br> <SPAN style="color:#00007F">Dim</SPAN> Crit <SPAN style="color:#00007F">As</SPAN> Range, Dest <SPAN style="color:#00007F">As</SPAN> Range<br> <SPAN style="color:#00007F">Dim</SPAN> Agents<br> <SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br> <SPAN style="color:#00007F">Dim</SPAN> wsA <SPAN style="color:#00007F">As</SPAN> Worksheet<br> <SPAN style="color:#00007F">Dim</SPAN> CurrAgent <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN>, Invalid <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br> <br> <SPAN style="color:#00007F">Const</SPAN> frmlabase <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN> = "=OR(D2=""#"",E2=""#"")"<br> <br> Application.ScreenUpdating = <SPAN style="color:#00007F">False</SPAN><br> <SPAN style="color:#00007F">With</SPAN> Sheets("Agent_Roster")<br> Agents = .Range("A2", .Range("A" & .Rows.Count).End(xlUp)).Value<br> End <SPAN style="color:#00007F">With</SPAN><br> <SPAN style="color:#00007F">With</SPAN> Sheets("Sales").UsedRange<br> <SPAN style="color:#00007F">Set</SPAN> Crit = .Offset(, .Columns.Count).Resize(2, 1)<br> <SPAN style="color:#00007F">For</SPAN> i = 1 <SPAN style="color:#00007F">To</SPAN> <SPAN style="color:#00007F">UBound</SPAN>(Agents, 1)<br> CurrAgent = Agents(i, 1)<br> <SPAN style="color:#00007F">If</SPAN> Len(CurrAgent) > 0 <SPAN style="color:#00007F">Then</SPAN><br> <SPAN style="color:#00007F">Set</SPAN> wsA = <SPAN style="color:#00007F">Nothing</SPAN><br> <SPAN style="color:#00007F">On</SPAN> <SPAN style="color:#00007F">Error</SPAN> <SPAN style="color:#00007F">Resume</SPAN> <SPAN style="color:#00007F">Next</SPAN><br> <SPAN style="color:#00007F">Set</SPAN> wsA = Sheets(CurrAgent)<br> <SPAN style="color:#00007F">On</SPAN> <SPAN style="color:#00007F">Error</SPAN> <SPAN style="color:#00007F">GoTo</SPAN> 0<br> <SPAN style="color:#00007F">If</SPAN> wsA <SPAN style="color:#00007F">Is</SPAN> <SPAN style="color:#00007F">Nothing</SPAN> <SPAN style="color:#00007F">Then</SPAN><br> Invalid = Invalid & vbLf & CurrAgent<br> <SPAN style="color:#00007F">Else</SPAN><br> <SPAN style="color:#00007F">Set</SPAN> Dest = wsA.Range("A" & wsA.Rows.Count).<SPAN style="color:#00007F">End</SPAN>(xlUp).Offset(1)<br> Crit.Cells(2, 1).Formula = _<br> Replace(frmlabase, "#", Agents(i, 1), 1, -1, vbTextCompare)<br> .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Crit, _<br> CopyToRange:=Dest, Unique:=<SPAN style="color:#00007F">False</SPAN><br> wsA.Rows(Dest.Row).Delete<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br> <SPAN style="color:#00007F">Next</SPAN> i<br> Crit.ClearContents<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN><br> Application.ScreenUpdating = <SPAN style="color:#00007F">True</SPAN><br> <SPAN style="color:#00007F">If</SPAN> Len(Invalid) > 0 <SPAN style="color:#00007F">Then</SPAN><br> MsgBox "Agent sheets not found:" & Invalid<br> <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br>End <SPAN style="color:#00007F">Sub</SPAN><br></FONT>