NBZ85,
Using your example file, something like this should work for you:
Sub tgr()
Const sType As String = "a"
Dim wsData As Worksheet
Dim wsDest As Worksheet
Dim arrLarge As Variant
Dim arrSmall As Variant
Set wsData = Sheets("Data")
Set wsDest = Sheets("Paste")
With wsData.Range("C2", wsData.Cells(Rows.Count, "C").End(xlUp))
arrLarge = Application.Transpose(Evaluate("INDEX(TEXT(LARGE(INDEX(('" & wsData.Name & "'!" & .Offset(, -1).Address & "=""" & sType & """)*'" & wsData.Name & "'!" & .Address & ",),ROW(1:10)),""" & .Cells(1).NumberFormat & """),)"))
arrSmall = Application.Transpose(Evaluate("INDEX(TEXT(SMALL(INDEX(('" & wsData.Name & "'!" & .Offset(, -1).Address & "=""" & sType & """)*'" & wsData.Name & "'!" & .Address & ",),ROW(1:10)),""" & .Cells(1).NumberFormat & """),)"))
End With
With wsData.UsedRange
.AutoFilter 2, sType
.AutoFilter 3, arrLarge, xlFilterValues
.Offset(1).EntireRow.Copy wsDest.Range("A3")
.AutoFilter 3, arrSmall, xlFilterValues
.Offset(1).EntireRow.Copy wsDest.Range("A18")
.AutoFilter
End With
wsDest.Range("A2:C12").Sort wsDest.Range("C3"), xlDescending, Header:=xlGuess
wsDest.Range("A17:C27").Sort wsDest.Range("C18"), xlAscending, Header:=xlGuess
Set wsData = Nothing
Set wsDest = Nothing
If IsArray(arrLarge) Then Erase arrLarge
If IsArray(arrSmall) Then Erase arrSmall
End Sub
Bookmarks