Ocultar filas en ceros en todas las columnas

Tengo una serie de datos en varias columnas y necesito una macro para ocultar solo las filas donde su valor sea "cero" en todas las columnas, ejemplo:
columna a b c d
30 10 0 15 no se oculte la fila
0 0 0 0 si se oculte la fila
Como esta información es copiada de otras hojas las celdas pueden cambiar su valor. Se podrá también posteriormente mostrar la celda oculta si esta después registra un valor mayor a cero y viceversa, ¿ocultar la que ya no tenga valor mayor a cero?

1 respuesta

Respuesta
2
Si entendí prueba esto
Sub oculta()
Application.ScreenUpdating = False
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell = 0 And ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 And ActiveCell.Offset(0, 3) = 0 Then
ActiveCell.Select
Selection.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub
Muchas gracias, me esta funcionando muy bien.
Respecto a la segunda parte de la pregunta no fui muy claro, mi duda es que si, una fila que ya fue oculta y posteriormente tiene movimientos en alguna de sus columnas con valor mayor a "cero", esta automáticamente se pueda muestrar o, si una que tiene un valor mayor a "cero" y luego queda en "ceros" se pueda ocultar también automáticamente, (claro que no es difícil en cada actualización utilizar "mostrar" todas las filas y posteriormente aplicar la macro otra vez)
Nuevamente muchas gracias
Saludos!
¿El valor de la celdas lo actualizas con una fórmula?
Si es así lo que debes hacer es aplica la macro nuevamente y listo.
No se si es eso lo que quieres, sino pregunta nuevamente.
Hay una opción de que se active la macro automáticamente al cambiar el valor de un rango de celdas.
Eso también podrías aplicarlo
Colocando por ejemplo en el código de la hoja en el evento change donde aplicas la macro
If Not Application.Intersect(Target, Range("A1:D100")) Is Nothing Then
call oculta
End if
Prueba y me comentas. Recuerda finalizar la pregunta
Buenos días,
Todo va muy bien, si una celda con datos se vuelve a "cero" con solo posicionarme en cualquier celda de la selección automáticamente se activa la macro.
Ahora solo surgió un detalle: si una celda en "ceros" que ya estaba oculta adquiere un valor, esta no se muestra ni me deja mostrarla seleccionándola, ya que con solo situarme en una celda de la selección de la macro, esta se actualiza y no permite cambio alguno en ninguna celda de dicha selección.
Gracias
Saludos!
Te decía que colocaras el evento change de la hoja, no el selection change.
La diferencia de uno y otro es que uno se ejecuta al seleccionar y el otro al cambiar y salir de la celda.
No se aun si los valores de la celda trabajan con fórmulas, si es así, entonces al inicio de la macro muestra todas las filas y después viene a ocultar las que cumple con las condiciones
Ejemplo
Sub oculta()
Application.ScreenUpdating = False
Range("A1:D100").Select
Selection.EntireRow.Hidden = False
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell = 0 And ActiveCell.Offset(0, 1) = 0 And ActiveCell.Offset(0, 2) = 0 And ActiveCell.Offset(0, 3) = 0 Then
ActiveCell.Select
Selection.EntireRow.Hidden = True
End If
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub
Perfecto!, lo ultimo quedo justo lo que necesito, perdón por no comentar de las fórmulas, para este trabajo utilice "=hoja...", más para otros trabajos utilizare "buscarV" o "sumar.si".
Muchas gracias por tu apoyo,
Saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas