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

#1 Héctor Miguel
29/11/2007 - 02:27 | Informe spam
hola, Diana !

De un listado muy grande necesito aplicar cuatro veces el advancedfilter
para que cree una nueva lista segun cuatro criterios que estan en la hoja 1 en A1:A2; B1:B2; C1:C2 y D1:D2.
Como tengo que modificar el codigo de filtro avanzado... 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 asi sucesivamente.

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



(p.e.)

Dim Criterios, n As Byte
Criterios = Array("a1:a2", "b1:b2", "c1:c2", "d1:d2")
With Worksheets("consolidado")
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
Next
End With

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Diana
29/11/2007 - 04:42 | Informe spam
Hola Héctor Miguel,
Gracias por tu ayuda!
Estuve probando con tu código pero se produce el error 438 en tiempo de
ejecución. "El objeto no admite esta propiedad o método".
Alguna idea de por qué se produce el error?
Diana

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

De un listado muy grande necesito aplicar cuatro veces el advancedfilter
para que cree una nueva lista segun cuatro criterios que estan en la hoja
1 en A1:A2; B1:B2; C1:C2 y D1:D2.
Como tengo que modificar el codigo de filtro avanzado... 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 asi
sucesivamente.

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



(p.e.)

Dim Criterios, n As Byte
Criterios = Array("a1:a2", "b1:b2", "c1:c2", "d1:d2")
With Worksheets("consolidado")
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
Next
End With

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

Respuesta Responder a este mensaje
#3 Héctor Miguel
29/11/2007 - 05:14 | Informe spam
hola, Diana !

Estuve probando con tu codigo pero se produce el error 438 en tiempo de ejecucion.
"El objeto no admite esta propiedad o metodo".
Alguna idea de por qué se produce el error?



tienes razon... (disculpame, creo que en "mi hora de cenar" me comi el rango de la lista para los filtros avanzados) :-((

cambia la linea del bloque With ...

de: -> With Worksheets("consolidado")
a:-> With Worksheets("consolidado").Range("a3:j17520")

saludos,
hector.

De un listado muy grande necesito aplicar cuatro veces el advancedfilter
para que cree una nueva lista segun cuatro criterios que estan en la hoja 1 en A1:A2; B1:B2; C1:C2 y D1:D2.
Como tengo que modificar el codigo de filtro avanzado... 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 asi sucesivamente.

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



(p.e.)

Dim Criterios, n As Byte
Criterios = Array("a1:a2", "b1:b2", "c1:c2", "d1:d2")
With Worksheets("consolidado")
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
Next
End With
Respuesta Responder a este mensaje
#4 Diana
29/11/2007 - 12:28 | Informe spam
Hola Héctor Miguel,

Ahora sí! Funciona de maravillas.
Si no es mucha molestia te pediría una ayuda más.
La fila A3 contiene los nombres de campos de las columnas.
Cómo modificarías este código para que en la nueva lista aparezcan los
títulos sólo con el primer filtro, y cuando filtra por los siguientes
criterios no repita los encabezados sino sólo los datos?.
Como siempre muchas gracias por tu invalorable ayuda.
Saludos desde Buenos Aires.
Diana



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

Estuve probando con tu codigo pero se produce el error 438 en tiempo de
ejecucion.
"El objeto no admite esta propiedad o metodo".
Alguna idea de por qué se produce el error?



tienes razon... (disculpame, creo que en "mi hora de cenar" me comi el
rango de la lista para los filtros avanzados) :-((

cambia la linea del bloque With ...

de: -> With Worksheets("consolidado")
a:-> With Worksheets("consolidado").Range("a3:j17520")

saludos,
hector.

De un listado muy grande necesito aplicar cuatro veces el
advancedfilter
para que cree una nueva lista segun cuatro criterios que estan en la
hoja 1 en A1:A2; B1:B2; C1:C2 y D1:D2.
Como tengo que modificar el codigo de filtro avanzado... 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 asi
sucesivamente.

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



(p.e.)

Dim Criterios, n As Byte
Criterios = Array("a1:a2", "b1:b2", "c1:c2", "d1:d2")
With Worksheets("consolidado")
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
Next
End With






Respuesta Responder a este mensaje
#5 Héctor Miguel
30/11/2007 - 03:25 | Informe spam
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
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida