en vba repetir varias veces advancedfilter

28/11/2007 - 21:59 por Diana | Informe spam
Hola a todos,

De un listado muy grande necesito aplicar cuatro veces el advancedfilter
para que cree una nueva lista según cuatro criterios que están en la hoja 1
en A1:A2; B1:B2; C1:C2 y D1:D2.
Como tengo que modificar el código de filtro avanzado que está abajo para
que luego de leer el criterio 1 y lo pegue en la hoja NuevLista lea el
criterio 2 y pegue la lista filtrada debajo de la anterior y así
sucesivamente.

Sheets ("consolidado").Select
ActiveSheet.Range("A3:J17520").AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=Sheets( _
"Hoja1").Range("A1:A2"), CopyToRange:=Sheets
("nuevalista").Range("A2"), Unique:=False

Muchísimas gracias.
Diana

Preguntas similare

Leer las respuestas

#6 Diana
30/11/2007 - 12:14 | Informe spam
Héctor,
Impresionante!!!
Quedó perfecto!
Gracias por tu ayuda.
Saludos,
Diana

"Héctor Miguel" escribió en el mensaje
news:
hola, Diana !

La fila A3 contiene los nombres de campos de las columnas.
Como modificarias este codigo para que en la nueva lista aparezcan los
titulos solo con el primer filtro
y cuando filtra por los siguientes criterios no repita los encabezados
sino solo los datos?...



los filtros avanzados al copiar a otro lugar incluyen los titulos (por
cada vez), asi que...
el siguiente codigo elimina la fila de los copiados a partir de la segunda
vez que se filtra
(la primera vez se quedan los titulos a partir de la fila 2 o la siguiente
que este libre) -?-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Dim Criterios, n As Byte, Fx As Integer
Criterios = Array("a1:a2", "b1:b2", "c1:c2", "d1:d2")
With Worksheets("consolidado").Range("a3:j17520")
For n = LBound(Criterios) To UBound(Criterios)
.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("hoja1").Range(Criterios(n)), _

CopyToRange:=Worksheets("nuevalista").Range("a65536").End(xlUp).Offset(1),
_
Unique:=False
If n > LBound(Criterios) Then Worksheets("nuevalista").Range("a" & Fx
+ 1).EntireRow.Delete
With Worksheets("nuevalista")
Fx = .Cells.Find("*", .Range("a1"), xlValues, xlWhole, xlByRows,
xlPrevious).Row
End With
Next
End With

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida