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

#6 Fernando Arroyo
13/07/2005 - 09:53 | Informe spam
Prueba con:

Sub prueba()
Dim wksNuevaHoja As Worksheet 'Variable para almacenar la hoja que creará el código
Dim n As Byte 'Para iterar por las hojas

Application.ScreenUpdating = False 'Para mejorar el rendimiento del código

For n = 1 To 3 'Se procesarán las hojas Hoja1, Hoja2 y Hoja3

With Worksheets("Hoja" & CStr(n)) 'A partir de esta línea, el . hará referencia a la hoja
.[C3].AutoFilter 'Crea el autofiltro en la celda C3
.[C3].AutoFilter field:=1, Criteria1:="F" 'Establece la condición para el autofiltro
.AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy 'Copia las filas visibles

If IsError(['Datos filtrados'!IV65536]) Then 'Si no existe la hoja "Datos filtrados" ...
Set wksNuevaHoja = Worksheets.Add(after:=Sheets(Sheets.Count)) '... la crea y la coloca al final de las existentes en el libro
wksNuevaHoja.Name = "Datos filtrados" 'Pone el nombre de la hoja
End If

With wksNuevaHoja
.Paste Destination:=.Range("A" & .[A65536].End(xlUp).Row + 1) 'Pega los datos a partir de la 1ª fila libre (dejando la fila 1 para posibles títulos)
End With

.[C3].AutoFilter 'Quita el autofiltro
End With 'Final del 1er. With

Next n

wksNuevaHoja.[A1].Select 'Selecciona una celda (para "deseleccionar" las celdas recien copiadas)
Application.ScreenUpdating = True

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


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Aitor Uranga" escribió en el mensaje news:%23%

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.

Respuesta Responder a este mensaje
#7 Aitor Uranga
13/07/2005 - 18:25 | Informe spam
Aupa Fernando, tengo alguna duda mas, pero mañana ya estoy de vacaciones, te
importaría si a la vuelta vuelvo a abrir la pregunta y te envio un e-mail?

Gracias y un saludo.

"Fernando Arroyo" escribió en el mensaje
news:%23uCNv$
Prueba con:

Sub prueba()
Dim wksNuevaHoja As Worksheet 'Variable para almacenar la hoja que
creará el código
Dim n As Byte 'Para iterar por las hojas

Application.ScreenUpdating = False 'Para mejorar el rendimiento del
código

For n = 1 To 3 'Se procesarán las hojas Hoja1, Hoja2 y Hoja3

With Worksheets("Hoja" & CStr(n)) 'A partir de esta línea, el . hará
referencia a la hoja
.[C3].AutoFilter 'Crea el autofiltro en la celda C3
.[C3].AutoFilter field:=1, Criteria1:="F" 'Establece la
condición para el autofiltro

.AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count -
1).SpecialCells(xlCellTypeVisible).Copy 'Copia las filas visibles

If IsError(['Datos filtrados'!IV65536]) Then 'Si no existe la
hoja "Datos filtrados" ...
Set wksNuevaHoja Worksheets.Add(after:=Sheets(Sheets.Count)) '... la crea y la coloca al
final de las existentes en el libro
wksNuevaHoja.Name = "Datos filtrados" 'Pone el nombre de la
hoja
End If

With wksNuevaHoja
.Paste Destination:=.Range("A" & .[A65536].End(xlUp).Row +
1) 'Pega los datos a partir de la 1ª fila libre (dejando la fila 1 para
posibles títulos)
End With

.[C3].AutoFilter 'Quita el autofiltro
End With 'Final del 1er. With

Next n

wksNuevaHoja.[A1].Select 'Selecciona una celda (para "deseleccionar" las
celdas recien copiadas)
Application.ScreenUpdating = True

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


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Aitor Uranga" escribió en el mensaje
news:%23%

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.

Respuesta Responder a este mensaje
#8 Fernando Arroyo
14/07/2005 - 10:18 | Informe spam
"Aitor Uranga" escribió en el mensaje news:

Aupa Fernando, tengo alguna duda mas, pero mañana ya estoy de vacaciones, te
importaría si a la vuelta vuelvo a abrir la pregunta y te envio un e-mail?

Gracias y un saludo.




No me importaría.
Felices (y laaaargaaaas) vacaciones ;-)


Fernando
Respuesta Responder a este mensaje
#9 Aitor Uranga
14/07/2005 - 13:59 | Informe spam
Gracias y hasta la vuelta.

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

Aupa Fernando, tengo alguna duda mas, pero mañana ya estoy de vacaciones,
te
importaría si a la vuelta vuelvo a abrir la pregunta y te envio un e-mail?

Gracias y un saludo.




No me importaría.
Felices (y laaaargaaaas) vacaciones ;-)


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