Filtrar filas en una hoja de excel

Tengo un libro con multitud de hojas y tengo una hoja, nombre "RESUMEN" donde están todos los datos provenientes de las otras hojas.

Esta hoja (RESUMEN" ) esta compuesta por 5 columnas:

A = 1 ó 0

B = fecha

C = un evento cualquiera

D = un evento cualquiera

E = un evento cualquiera

El tema es que las filas son unas 3600

Quiero que cuando A es igual a "1" o distinta de "0" muestre la fila y cuando no se cumple esta condición se oculte.

He conseguido hacerlo mediante una macro, pero al ser tan grande el numero de filas, el proceso es muy lento.

Indicar también que las hojas están protegidas y justo antes del realizar el proceso hay que desproteger la hoja y cuando finalice volver a protegerla.

La macro que utilizo es esta:

Sub resumen()
Sheets("RESUMEN").Select
ActiveSheet.Unprotect ("xxxxl")
Application.ScreenUpdating = False
Range("a1").Activate
While ActiveCell.Row <> 3683
If ActiveCell.Value = 0 Then

ActiveCell.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Activate
Wend
Application.ScreenUpdating = True
ActiveSheet.Protect ("xxxx")
End Sub

1 respuesta

Respuesta
1

Según dices:

"Quiero que cuando A es igual a "1" o distinta de "0" muestre la fila"

Es lo mismo que decir que se muestre siempre que sea distinta de 0 (porque 1 ya es distinto de 0)

Creo que lo mejor es hacer un filtro y desmarcar el valor 0. Proteges la hoja y ya nadie podrá ver las filas con valor 0

Ando un poco perdido, .

Me puedes indicar como aplicar el filtro y que se actualice automáticamente al cambiar el dato de la columna "A".

Con lo del cero, tienes razón , es lo mismo "distinta de 0"

Hola de nuevo.

Creí que lo tenia controlado pero no es así.

Se aplicar el filtro, pero no consigo una macro que me aplique el filtro automáticamente

Un saludo

Deberás incluir una macro en la hoja asociada al evento change, esto significa que cada vez que cambie un valor en la hoja, la macro se ejecutará.

La macro lo que hace es filtrar los valores de la columna A que son 0

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:="<>0", Operator:=xlFilterValues
End Sub

Si los valores los tienes en una columna diferente tendrás que cambiar las letras

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas