Búsqueda en un documento con mútiples hojas

17/12/2003 - 15:42 por Alfons Fernandez | Informe spam
Hola,

Tengo un documento de múltiples hojas, un por año, y en cada hoja un matriz
con nombres de trabajadores en la primera columna (un mismo nombre puede
repetirse varias veces en una misma hoja) y información relevante en las
siguientes columnas.
Necesito preparar una búsqueda que me "arrastre" a una hoja nueva toda la
información relativa a un mismo trabajador, para todos los años en que haya
sido registrado en alguna de las hojas del documento.
Dicho de otra manera. La búsqueda debe permitir que para un mismo trabajador
buscado reciba múltiples respuestas y las copie en una hoja en blanco. Es
posible?

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
17/12/2003 - 18:10 | Informe spam
Una posibilidad:


Sub Resumen()
Dim wks As Worksheet
Dim wksResumen As Worksheet
Dim rng As Range

Application.ScreenUpdating = False

Set wksResumen = Worksheets("Resumen")
wksResumen.Cells.Delete 'Borrar los datos anteriores en la hoja resumen

With wksResumen
.Range("A1") = "Título1" 'Estos serían los títulos en la hoja Resumen
.Range("B1") = "Título2"
End With

For Each wks In Worksheets
If wks.Name <> "Resumen" Then
wks.Range("A1").CurrentRegion.AutoFilter field:=1, Criteria1:="b"
wks.AutoFilter.Range.Offset(1).Resize(wks.AutoFilter.Range.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy Destination:=wksResumen.Range("A" & wksResumen.Range("A65536").End(xlUp).Row + 1)
wks.Range("A1").AutoFilter
End If
Next wks

Application.ScreenUpdating = True

Set rng = Nothing
Set wksResumen = Nothing
Set wks = Nothing
End Sub


Para que el código funcione tiene que haber una hoja en el libro llamada Resumen, que será donde se pongan todas las filas que cumplan el criterio. Tal como está el código, el criterio sería todas las filas de cada hoja cuya celda de la columna A = "b", lo que se determina en la instrucción

wks.Range("A1").CurrentRegion.AutoFilter field:=1, Criteria1:="b"

Ten en cuenta que cada vez que ejecutes el código la hoja Resumen será borrada por completo para poner los nuevos datos.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Alfons Fernandez" escribió en el mensaje news:
Hola,

Tengo un documento de múltiples hojas, un por año, y en cada hoja un matriz
con nombres de trabajadores en la primera columna (un mismo nombre puede
repetirse varias veces en una misma hoja) y información relevante en las
siguientes columnas.
Necesito preparar una búsqueda que me "arrastre" a una hoja nueva toda la
información relativa a un mismo trabajador, para todos los años en que haya
sido registrado en alguna de las hojas del documento.
Dicho de otra manera. La búsqueda debe permitir que para un mismo trabajador
buscado reciba múltiples respuestas y las copie en una hoja en blanco. Es
posible?


Respuesta Responder a este mensaje
#2 Alfons Fernandez
30/12/2003 - 13:28 | Informe spam
Hola Fernando,

Como no he podido responderte a nivel indiviual, utilizo la respuesta al
grupo. Ante todo muchas gracias por la inmediatez de tu respuesta que me ha
sorprendido positivamente(es la primera vez que utilizo un newsgroup).

Hasta ahora sólo había grabado unas macros sencillas con excel, y en cuanto
a visual Basic son un analfabeto. Así que he pasado tu macro a un
programador, que la ha pulido y adaptado a lo que necesitaba. Muchas gracias
por tu ayuda.

Alfons

"Fernando Arroyo" escribió en el mensaje
news:
Una posibilidad:


Sub Resumen()
Dim wks As Worksheet
Dim wksResumen As Worksheet
Dim rng As Range

Application.ScreenUpdating = False

Set wksResumen = Worksheets("Resumen")
wksResumen.Cells.Delete 'Borrar los datos anteriores en la hoja resumen

With wksResumen
.Range("A1") = "Título1" 'Estos serían los títulos en la hoja
Resumen
.Range("B1") = "Título2"
End With

For Each wks In Worksheets
If wks.Name <> "Resumen" Then
wks.Range("A1").CurrentRegion.AutoFilter field:=1,
Criteria1:="b"

wks.AutoFilter.Range.Offset(1).Resize(wks.AutoFilter.Range.Rows.Count -
1).SpecialCells(xlCellTypeVisible).Copy Destination:=wksResumen.Range("A" &
wksResumen.Range("A65536").End(xlUp).Row + 1)
wks.Range("A1").AutoFilter
End If
Next wks

Application.ScreenUpdating = True

Set rng = Nothing
Set wksResumen = Nothing
Set wks = Nothing
End Sub


Para que el código funcione tiene que haber una hoja en el libro llamada
Resumen, que será donde se pongan todas las filas que cumplan el criterio.
Tal como está el código, el criterio sería todas las filas de cada hoja cuya
celda de la columna A = "b", lo que se determina en la instrucción

wks.Range("A1").CurrentRegion.AutoFilter field:=1,
Criteria1:="b"

Ten en cuenta que cada vez que ejecutes el código la hoja Resumen será
borrada por completo para poner los nuevos datos.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Alfons Fernandez" escribió en el
mensaje news:
Hola,

Tengo un documento de múltiples hojas, un por año, y en cada hoja un


matriz
con nombres de trabajadores en la primera columna (un mismo nombre puede
repetirse varias veces en una misma hoja) y información relevante en las
siguientes columnas.
Necesito preparar una búsqueda que me "arrastre" a una hoja nueva toda la
información relativa a un mismo trabajador, para todos los años en que


haya
sido registrado en alguna de las hojas del documento.
Dicho de otra manera. La búsqueda debe permitir que para un mismo


trabajador
buscado reciba múltiples respuestas y las copie en una hoja en blanco. Es
posible?


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