Macro para buscar información en distintas pestañas y pegar datos en otra hoja
Tengo un archivo que tiene esta pantalla para buscar información de unos productos:

Yo ingreso el código A.F. Y la sociedad está en una lista desplegable y me llena todos los demás datos. Entre ellos está el Expediente de A.F. Yo hice una macro que cuando le doy listar AF del expediente, en la parte de abajo me trae todos los demás códigos que están en ese mismo expediente junto con el que ingresé en la búsqueda. La macro me funciona bien, solo que quiero hacerla más optima ya que por mi poco conocimiento de VBA la hice muy engorrosa, entonces quisiera saber de una manera para simplificarla.
Lo que quiero hacer es esto: tengo 4 hojas con bases de datos que tienen los mismos campos pero para cada sociedad, prácticamente todos los datos que se muestran en la pantalla que anexe. Cuando yo seleccione la sociedad y el código, me busque en la hoja que corresponde a la sociedad el numero del expediente y me traiga los datos que se muestran en la tabla de abajo. Pero hay 2 detalles, 1 cuando en status dice "De Baja" hay otro número de expediente que está en otra columna, ejemplo el número de expediente está en la F, el numero de expediente "de baja" está en la M. El segundo es que quiero que los datos que trae solo traiga código, serie y descripción, cuando llegue a 40, siga en las columnas de al lado, cuando vuelva a llegar a 40, continúe debajo de los primeros 40 y así, puede que no pase de 40 los códigos o puede que sean más de 40.
Yo hice algo que es lo que me puso el archivo pesado y era que tenia formulada una hoja llamada control donde me traía todo los que metía en las otras 4 hojas y básicamente la macro que hice, filtraba de esa hoja los datos que quería y las pegaba en otra hoja llamada datos del filtrado y tenia formulado la pantalla inicial para que me trajera todos los datos pero ahora el archivo pesa un montonón.
Esta es la macro
Sub Listar_Exp()
' Listar_Exp Macro
Application.ScreenUpdating = False
Criterio1 = [C10]
Sheets("Datos de Filtrado").Select
Range("A2").Select
ActiveCell.Rows("1:600").EntireRow.Select
Selection.ClearContents
ActiveCell.Select
Sheets("Buscador de Datos").Select
If Criterio1 = "De Baja" Then
Sheets("Control").Select
ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=15
ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=18, Criteria1:=Sheets("Buscador de Datos").Range("k3")
Sheets("Buscador de Datos").Select
Else
Sheets("Control").Select
ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=18
ActiveSheet.Range("$A$1:$R$39997").AutoFilter Field:=15, Criteria1:=Sheets("Buscador de Datos").Range("k3")
Sheets("Buscador de Datos").Select
End If
Sheets("Control").Select
Range("D2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos de Filtrado").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Control").Select
Range("K2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos de Filtrado").Select
Range("b2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Control").Select
Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Datos de Filtrado").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Buscador de Datos").Select
Range("C3:F3").Select
Application.ScreenUpdating = True
End Sub


