Ocultar filas con resultado "cero"

Mi duda radica en lo siguiente:
Tengo un rango con resultados y subtotales y deseo que excel me evalúe los resultados y me oculte las filas cuyos resultados sean "cero" pero que no oculte los subtotales en caso de que sean "cero"
p.e.
A B C
1 + 2 = 3
1 * 0 = 0 <-- ocultar esta fila
2 - 1 = 1
subtotal1 4
1 + 2 = 3
1 * 0 = 0 <-- ocultar esta fila
1 - 4 = -3
Subtotal2 0 <-- no ocultar
Total 4 <-- si es cero no ocultar

1 respuesta

Respuesta
1
Hurtado!
En este caso, será necesario utilizar una macro.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "´Modulo") y pega el siguiente código:
Sub OcultaLin()
'Oculta líneas segun el siguiente caracter:
CharKey = 0
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Value = CharKey Then
ActiveCell.EntireRow.Hidden = True
Else
ActiveCell.EntireRow.Hidden = False
End If
ActiveCell.Offset(1).Select
Loop
End Sub
Cierra el editor y graba el archivo.
Para que funcione selecciona la primer celda de la columna donde están los ceros y ejecuta la macro que acabas de pegar (OcultaLin)
Como verás, reemplazando la variable CharKey por otra puedes lograr que se oculten las líneas, de acuerdo a ese nuevo carácter o número.
Tratándose de fórmulas, la macro controla si el nuevo resultado es distinto de cero y, eventualmente, mostraría celdas que hubiesen sido oculatadas en algún procedimiento anterior...
Hola Fernando
Efectivamente el procedimiento funciona, yo utilizaba algo similar simplemente que lo hacia con Worksheet_Calculate, con un rango del tipo DESREF.
La verdadera inquietud es como hacer para que oculte los resultados que poseen "cero" (tu procedimiento funciona muy bien) pero que también tenga en cuenta que los subtotales y totales no los oculte en el caso de que sean "cero".
Muchas gracias y disculpa tanta molestias.
Luis Fernando
OK, agregué un condicional más que evaluará el caso de que el valor cero surja de una función SUBTOTALES.
Prueba con esta versión modificada:
Sub OcultaLin()
'Oculta líneas segun el siguiente caracter:
CharKey = 0
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Value = CharKey Then
If InStr(1, ActiveCell.Formula, "SUBTOT") = 0 Then ActiveCell.EntireRow.Hidden = True
Else
ActiveCell.EntireRow.Hidden = False
End If
ActiveCell.Offset(1).Select
Loop
End Sub
Espero que cubra tus expectativas.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas