Amigo!
fiz esse código e funcionou, verifica se é isso que precisa... nao usei loop na planilha, pois 300 mil linhas deixaria muito lento, dessa forma está bem rápido.
deixei a planilha anexa tb.
abs
[email protected]
Sub teste()
Dim matriz(4) As String
matriz(1) = "ABONO"
matriz(2) = "INSALUBRIDADE"
matriz(3) = "SALÁRIO"
matriz(4) = "GRATIFICAÇÃO"
Application.ScreenUpdating = False
Sheets("BD").Activate
On Error Resume Next
ActiveSheet.ShowAllData 'limpa todos os filtros
On Error GoTo 0
'ponto para limpar todas as outras planilhas
For lin = 1 To 4
Sheets(matriz(lin)).Range("A2:K1000000").ClearContents
Next lin
'encontra a última linha da sua planilha
fim = Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row
For lin = 1 To 4
Sheets("BD").Activate
Sheets("BD").Range("$A$1:$K$" & fim).AutoFilter Field:=4, Criteria1:=matriz(lin) 'filtro na coluna porte
Range("A2:K" & fim).Copy
Sheets(matriz(lin)).Activate
Range("A2").PasteSpecial xlPasteValues
Next lin
End Sub
Postado : 23/03/2016 12:24 pm