Semáforo con Fechas En Excel

Quisiera conocer el código para un macro que deseo hacer, y es básicamente un semáforo que depende de las fechas.

Para el ejemplo anterior, quisiera que el código validara la fecha que se encuentra en A3<$B$1, el rango de B3:E3 sea ROJO, pero que si A3=$B$1, el rango de B3:E3 sea AMARILLO, Y por ultimo A3>$B$1, el rango de B3:E3 sea Verde, y así sucesivamente hasta la ultima fecha.

Respuesta
2

Utiliza esto como formato condicional

Fórmulas utilizadas

1. Para que permanezcan sin formato las celdas mientras estén vacías: =ESBLANCO(A3:$A$1048576) aplica a =$B$3:$E$1048576

2. Color Verde =A3:$A$1048576>$B$1 aplica a =$B$3:$E$1048576

3. Color Amarillo =A3:$A$1048576=$B$1 aplica a =$B$3:$E$1048576

4. Color Rojo =A3:$A$1048576<$B$1 aplica a =$B$3:$E$1048576

¡Muchas Gracias!

No nonocia la fórmula "Esblanco", excelente muchas gracias

Recuerda que debes aplicar esto formatos en toda la hoja y no sólo en la selección.

2 respuestas más de otros expertos

Respuesta
1

Te anexo la macro

Sub Semaforo()
'Por.Dante Amor
    fecha = Range("B1").Value
    uc = Cells(2, Columns.Count).End(xlToLeft).Column
    Set rango = Range("A3:A" & Range("A" & Rows.Count).End(xlUp).Row)
    For Each fec In rango
        Select Case fec.Value
            Case Is < fecha
                Range(Cells(fec.Row, "B"), Cells(fec.Row, uc)).Interior.ColorIndex = 3
            Case Is = fecha
                Range(Cells(fec.Row, "B"), Cells(fec.Row, uc)).Interior.ColorIndex = 6
            Case Is > fecha
                Range(Cells(fec.Row, "B"), Cells(fec.Row, uc)).Interior.ColorIndex = 4
        End Select
    Next
    MsgBox "Fin"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta
1

Antes de ayudarte con una respuesta me queda una duda ¿no te es útil usar "formato condicional"?

Salu2

Abraham Valencia

Hola Abraham.

Si lo puedo utilizar por formatos condicionales, pero quera dejarlo en código dado que este formato lo quiero aplicar sobre una tabla dinámica, y la tabla dinámica puede ser extensa y de pronto no cubrir el rango del formato, o aplicar los formatos sobre algo que no lo necesito.

Es por esto la necesidad del código

Desde mi punto de vista te será muy útil lo planteado por Jair Vides, aunque intuyo que ya lo probaste jejeje. Igual no quería dejar de comentar algunas cosas:

- La aplicación de formato con Macros tiene una desventaja, a diferencia de cuando se usa "Formato Condicional", dicho formato aplicado con macros no cambiará si cambia el valor de la celda. Podría intentarse algo con algún "evento" de la hoja pero para volver al formato "normal" o supones que es el "sin formato" o tendrías que "guardar", siempre a través de la macro, el formato anterior al cambio, lo que por cierto haría nuestra macro un "poquito" más lenta. No olvidemos que la macro lo que hace es cambiar propiedades "interior.ColorIndex" que NO es lo mismo que aplicar "formato condicional" (que por cierto en VBA es la propiedad "FormatConditions")

- Sobre los formatos de tablas dinámicas, te cuento que en general es complicado mantener sus formatos, incluso aplicando la herramienta "Mantener el formato de la celda al actualizar" ya que al actualizarse las TD "cambian" cosas y Excel interpreta que esos cambios "alteran" todo y no hay nada que mantener. Sí, así de radical se nos pone a veces. Y sí, definitivamente aplicar "formatos condicionales" a las TD, es un ¿problema?. Quizá en ese caso sí convenga cambiar los colores/cambiar_formatos a través de macros.

Muchos salu2

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas