Filtrar registros de una hoja a otra hoja

07/07/2005 - 13:43 por Aitor Uranga | Informe spam
Hola, me explico, en una hoja tengo los datos de unas personas con las
siguientes columnas: Categoría, nombre, apellidos, nº de salidas. La
categoría es F o M que depende de el número de salidas que tenga el
individuo y lo que yo quiero, es que a través de alguna fórmula o lo que
sea, me copie todos los registros que tengan la categoría F a otra hoja del
mismo archivo.

Alguien sabe si se puede hacer esto.

Gracias.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
07/07/2005 - 14:03 | Informe spam
"Aitor Uranga" escribió en el mensaje news:

Hola, me explico, en una hoja tengo los datos de unas personas con las
siguientes columnas: Categoría, nombre, apellidos, nº de salidas. La
categoría es F o M que depende de el número de salidas que tenga el
individuo y lo que yo quiero, es que a través de alguna fórmula o lo que
sea, me copie todos los registros que tengan la categoría F a otra hoja del
mismo archivo.

Alguien sabe si se puede hacer esto.

Gracias.




Por ejemplo, para copiar en una hoja nueva llamada "Datos filtrados" todas las filas de Hoja1 que tuvieran en la columna A una F, el código podría ser:

Sub prueba()
Dim wksNuevaHoja As Worksheet

With Worksheets("Hoja1").Range("A1")
.AutoFilter 'Se supone que los datos a filtrar comienzan en A2 (la primera fila es de encabezados)
.AutoFilter field:=1, Criteria1:="F"
.Cells.SpecialCells(xlCellTypeVisible).Copy

Set wksNuevaHoja = Worksheets.Add(after:=Sheets(Sheets.Count))
With wksNuevaHoja
.Name = "Datos filtrados"
.Paste
.[A1].Select
End With
.AutoFilter
End With

Set wksNuevaHoja = Nothing
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#2 Aitor Uranga
07/07/2005 - 16:31 | Informe spam
Increible!!!! Funcionaaaaaaa.

Muchas gracias Fernando.

Para rizar el rizo, me gustaría entenderlo e incluso cambiar algunas
cosillas, por ejemplo:

Si la primera fila no empieza en el A2, debería de cambiarlo en la tercera
línea de código y poner por ejemplo With Woksheets("Hoja1").Range("C3")

Sería mucho pedir que me pusieras la función de cada una de las líneas de
código.

Gracias por tu ayuda.


"Fernando Arroyo" escribió en el mensaje
news:
"Aitor Uranga" escribió en el mensaje
news:

Hola, me explico, en una hoja tengo los datos de unas personas con las
siguientes columnas: Categoría, nombre, apellidos, nº de salidas. La
categoría es F o M que depende de el número de salidas que tenga el
individuo y lo que yo quiero, es que a través de alguna fórmula o lo que
sea, me copie todos los registros que tengan la categoría F a otra hoja


del
mismo archivo.

Alguien sabe si se puede hacer esto.

Gracias.




Por ejemplo, para copiar en una hoja nueva llamada "Datos filtrados" todas
las filas de Hoja1 que tuvieran en la columna A una F, el código podría ser:

Sub prueba()
Dim wksNuevaHoja As Worksheet

With Worksheets("Hoja1").Range("A1")
.AutoFilter 'Se supone que los datos a filtrar comienzan en A2 (la
primera fila es de encabezados)
.AutoFilter field:=1, Criteria1:="F"
.Cells.SpecialCells(xlCellTypeVisible).Copy

Set wksNuevaHoja = Worksheets.Add(after:=Sheets(Sheets.Count))
With wksNuevaHoja
.Name = "Datos filtrados"
.Paste
.[A1].Select
End With
.AutoFilter
End With

Set wksNuevaHoja = Nothing
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#3 Fernando Arroyo
08/07/2005 - 10:15 | Informe spam
"Aitor Uranga" escribió en el mensaje news:

Increible!!!! Funcionaaaaaaa.

Muchas gracias Fernando.

Para rizar el rizo, me gustaría entenderlo e incluso cambiar algunas
cosillas, por ejemplo:

Si la primera fila no empieza en el A2, debería de cambiarlo en la tercera
línea de código y poner por ejemplo With Woksheets("Hoja1").Range("C3")




Si el filtro debe estar en la celda C3, así es.

Sería mucho pedir que me pusieras la función de cada una de las líneas de
código.

Gracias por tu ayuda.





Sub prueba()
Dim wksNuevaHoja As Worksheet 'Variable para almacenar la hoja que creará el código

With Worksheets("Hoja1").Range("C3") 'A partir de esta línea, el . hará referencia a Hoja1!C3
.AutoFilter 'Crea el autofiltro
.AutoFilter field:=1, Criteria1:="F" 'Establece la condición para el autofiltro
.Cells.SpecialCells(xlCellTypeVisible).Copy 'Copia las filas visibles

Set wksNuevaHoja = Worksheets.Add(after:=Sheets(Sheets.Count)) 'Crea la nueva hoja y la coloca al final de las existentes en el libro
With wksNuevaHoja 'A partir de esta línea, el . hará referencia a la nueva hoja
.Name = "Datos filtrados" 'Pone el nombre de la hoja
.Paste 'Pega los datos
.[A1].Select 'Selecciona una celda (para "deseleccionar" las celdas recien copiadas)
End With 'Final del 2º With
.AutoFilter 'Quita el autofiltro
End With 'Final del 1er. With

Set wksNuevaHoja = Nothing 'Vacía el objeto (no es imprescindible, pero tampoco estorba)
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel
www.excelesp.com
Respuesta Responder a este mensaje
#4 Aitor Uranga
11/07/2005 - 17:23 | Informe spam
Ok, muchas gracias, algo mas que he aprendido.


"Fernando Arroyo" escribió en el mensaje
news:
"Aitor Uranga" escribió en el mensaje
news:

Increible!!!! Funcionaaaaaaa.

Muchas gracias Fernando.

Para rizar el rizo, me gustaría entenderlo e incluso cambiar algunas
cosillas, por ejemplo:

Si la primera fila no empieza en el A2, debería de cambiarlo en la tercera
línea de código y poner por ejemplo With Woksheets("Hoja1").Range("C3")




Si el filtro debe estar en la celda C3, así es.

Sería mucho pedir que me pusieras la función de cada una de las líneas de
código.

Gracias por tu ayuda.





Sub prueba()
Dim wksNuevaHoja As Worksheet 'Variable para almacenar la hoja que
creará el código

With Worksheets("Hoja1").Range("C3") 'A partir de esta línea, el . hará
referencia a Hoja1!C3
.AutoFilter 'Crea el autofiltro
.AutoFilter field:=1, Criteria1:="F" 'Establece la condición para el
autofiltro
.Cells.SpecialCells(xlCellTypeVisible).Copy 'Copia las filas
visibles

Set wksNuevaHoja = Worksheets.Add(after:=Sheets(Sheets.Count)) 'Crea
la nueva hoja y la coloca al final de las existentes en el libro
With wksNuevaHoja 'A partir de esta línea, el . hará referencia a la
nueva hoja
.Name = "Datos filtrados" 'Pone el nombre de la hoja
.Paste 'Pega los datos
.[A1].Select 'Selecciona una celda (para "deseleccionar" las
celdas recien copiadas)
End With 'Final del 2º With
.AutoFilter 'Quita el autofiltro
End With 'Final del 1er. With

Set wksNuevaHoja = Nothing 'Vacía el objeto (no es imprescindible, pero
tampoco estorba)
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel
www.excelesp.com
Respuesta Responder a este mensaje
#5 Aitor Uranga
12/07/2005 - 13:48 | Informe spam
Hola, quiero intentar rizar el rizo, si consigo hacer esto (con vuestra
ayuda por supuesto) ya seria la repanocha.

Lo hecho hasta ahora va fenomenal, incluso le cambio la celda donde empieza
la búsqueda o el filtro, pero y si en vez de una hoja tengo 3 y la uno es de
benjamines, la 2 de alevines y la 3 de veteranos, y quiero hacer lo mismo,
pero que me busque en las tres hojas y que después me pegue en la misma hoja
primero los benjamines, luego hacia abajo los alevines y luego hacia abajo
los veteranos?

Me imagino que hacer el autofiltro en las diferentes hojas será fácil, pues
es repetir el código cambiando la hoja además de hacer unos sub dentro del
sub para diferenciar donde empieza uno y acaba el otro (espero no
equivocarme, además se la teoría pero no se como se hace), pero donde lo veo
mas difícil es en el pegado, pues no sabes si va a pegar 10 registros o 120.

Que me decís???

Gracias de antemano.


"Fernando Arroyo" escribió en el mensaje
news:
"Aitor Uranga" escribió en el mensaje
news:

Increible!!!! Funcionaaaaaaa.

Muchas gracias Fernando.

Para rizar el rizo, me gustaría entenderlo e incluso cambiar algunas
cosillas, por ejemplo:

Si la primera fila no empieza en el A2, debería de cambiarlo en la tercera
línea de código y poner por ejemplo With Woksheets("Hoja1").Range("C3")




Si el filtro debe estar en la celda C3, así es.

Sería mucho pedir que me pusieras la función de cada una de las líneas de
código.

Gracias por tu ayuda.





Sub prueba()
Dim wksNuevaHoja As Worksheet 'Variable para almacenar la hoja que
creará el código

With Worksheets("Hoja1").Range("C3") 'A partir de esta línea, el . hará
referencia a Hoja1!C3
.AutoFilter 'Crea el autofiltro
.AutoFilter field:=1, Criteria1:="F" 'Establece la condición para el
autofiltro
.Cells.SpecialCells(xlCellTypeVisible).Copy 'Copia las filas
visibles

Set wksNuevaHoja = Worksheets.Add(after:=Sheets(Sheets.Count)) 'Crea
la nueva hoja y la coloca al final de las existentes en el libro
With wksNuevaHoja 'A partir de esta línea, el . hará referencia a la
nueva hoja
.Name = "Datos filtrados" 'Pone el nombre de la hoja
.Paste 'Pega los datos
.[A1].Select 'Selecciona una celda (para "deseleccionar" las
celdas recien copiadas)
End With 'Final del 2º With
.AutoFilter 'Quita el autofiltro
End With 'Final del 1er. With

Set wksNuevaHoja = Nothing 'Vacía el objeto (no es imprescindible, pero
tampoco estorba)
End Sub

Un saludo.


Fernando Arroyo
MS MVP - Excel
www.excelesp.com
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida